home *** CD-ROM | disk | FTP | other *** search
/ The 640 MEG Shareware Studio 5 / The 640 Meg Shareware Studio CD-ROM Volume V (Data Express)(1994).ISO / amiga / avm1_19.lha / rexx / defaultsender.avm < prev    next >
Text File  |  1994-04-06  |  97KB  |  3,488 lines

  1. /* TITLE: avm:source/defaultsender.avmsrc */
  2. /* we want results! Otherwise, we wouldn't get anything from RESULT */
  3. options results
  4.  
  5. /* Need to make sure that stdtail.avm is also included */
  6. signal on halt
  7. signal on novalue
  8. signal on syntax
  9. signal on break_c
  10.  
  11. /* needed for some of the functions we use */
  12. call addlib("rexxsupport.library", 0, -30, 0)
  13.  
  14. /* a higher than normal priority since calls are important to us :) */
  15. call pragma('priority', 1)
  16.  
  17. /* ensure that commands are directed to the correct server */
  18. parse arg servername .
  19. address value servername
  20.  
  21.  
  22. parse upper arg servername mailbox magiccookie .
  23.  
  24. /* If type is voice, goto sendVoice.  Otherwise, go to sendFax */
  25.  
  26. call loadLogEntry(mailbox, magiccookie)
  27.  
  28. if log.returnNumber = '' then do
  29.   log.returnStatus = 'No Tel#'
  30.   log.returnRetry = 0
  31.   signal sendVoiceDone
  32. end
  33. if log.filename = '' then do
  34.   log.returnStatus = 'No File'
  35.   log.returnRetry = 0
  36.   signal sendVoiceDone
  37. end
  38.  
  39. if upper(log.type) = 'VOICE' then signal sendVoice
  40. else if upper(log.type) = 'FAX' then signal sendFax
  41. log.returnstatus = 'Not Voice/Fax'
  42. log.returnretry = 0
  43. signal sendVoiceDone
  44.  
  45. /* Going to send a voice file */
  46.  
  47. /* Dial up to three times */
  48.  
  49. sendVoice:
  50. numTries = 3
  51.  
  52. sendVoiceRedial:
  53. 'dial' log.returnnumber
  54. action = rc
  55. select
  56.   when action = 0 then nop
  57.   when action = 8 then signal sendVoiceAgain
  58.   when action = 10 then signal sendVoiceAgain
  59.   when action = 12 then do; log.returnStatus = 'Abort'; log.returnRetry = 0; signal sendVoiceDone; end
  60.   when action = 14 then do; log.returnStatus = 'Error'; log.returnRetry = 0; signal sendVoiceDone; end
  61.   when action = 16 then do; log.returnStatus = 'Error'; log.returnRetry = 0; signal sendVoiceDone; end
  62.   otherwise signal arexxerror
  63. end
  64. signal sendVoiceConnected
  65.  
  66. sendVoiceAgain:
  67. 'requiremode' 'Voice'
  68.  
  69. 'delay' 5
  70. action = rc
  71. select
  72.   when action = 0 then nop
  73.   when action = 12 then do; log.returnStatus = 'Abort'; log.returnRetry = 0; signal sendVoiceDone; end
  74.   when action = 14 then do; log.returnStatus = 'Error'; log.returnRetry = 0; signal sendVoiceDone; end
  75.   when action = 16 then do; log.returnStatus = 'Error'; log.returnRetry = 0; signal sendVoiceDone; end
  76.   otherwise signal arexxerror
  77. end
  78.  
  79.  
  80. sendVoiceRetry:
  81. numTries = numTries - 1
  82. if numTries <= 0 then do
  83.   log.returnStatus = 'Busy'
  84.   signal sendVoiceDone
  85. end
  86. signal sendVoiceRedial
  87.  
  88. sendVoiceConnected:
  89. actualFileName = log.fileName
  90. if verify(actualFileName, '/:', 'M') = 0 then
  91.   actualFileName = voiceFile(mailbox, actualFileName)
  92. actualAltFileName = ''
  93. if symbol('log.altFileName') = 'VAR' then actualAltFileName = log.altFileName
  94. actualAltFileName = voiceFile(mailbox, actualAltFileName)
  95.  
  96. numTimes = 5
  97.  
  98. sendVoiceRepeat:
  99. if actualAltFileName = '' then signal sendVoiceSkipIntro
  100.  
  101. 'playvoice' actualAltFileName
  102. action = rc
  103. select
  104.   when action = 0 then nop
  105.   when action = 1 then nop
  106.   when action = 4 then do; log.returnStatus = 'Fax?'; log.returnRetry = 0; signal sendVoiceDone; end
  107.   when action = 5 then do; log.returnStatus = 'Data?'; log.returnRetry = 0; signal sendVoiceDone; end
  108.   when action = 8 then do; if numTimes = 3 then signal sendVoiceAgain; else signal sendVoiceBusy; end
  109.   when action = 12 then do; log.returnStatus = 'Abort'; log.returnRetry = 0; signal sendVoiceDone; end
  110.   when action = 14 then nop
  111.   when action = 16 then nop
  112.   otherwise signal arexxerror
  113. end
  114.  
  115. 'flushphonebuffer'
  116.  
  117. sendVoiceSkipIntro:
  118. 'playvoice' actualFileName
  119. action = rc
  120. select
  121.   when action = 0 then nop
  122.   when action = 1 then nop
  123.   when action = 4 then do; log.returnStatus = 'Fax?'; log.returnRetry = 0; signal sendVoiceDone; end
  124.   when action = 5 then do; log.returnStatus = 'Data?'; log.returnRetry = 0; signal sendVoiceDone; end
  125.   when action = 8 then do; if numTimes = 3 then signal sendVoiceAgain; else signal sendVoiceBusy; end
  126.   when action = 12 then do; log.returnStatus = 'Abort'; log.returnRetry = 0; signal sendVoiceDone; end
  127.   when action = 14 then do; log.returnStatus = 'Error'; log.returnRetry = 0; signal sendVoiceDone; end
  128.   when action = 16 then do; log.returnStatus = 'Error'; log.returnRetry = 0; signal sendVoiceDone; end
  129.   otherwise signal arexxerror
  130. end
  131.  
  132. 'flushphonebuffer'
  133.  
  134. sendVoiceMenu:
  135. call aapresentmenu('avm:voices/SendVoice', '019#*', '1')
  136. action = result
  137. select
  138.   when action = '=0' then signal sendVoiceMenu
  139.   when action = '=1' then signal sendVoiceRepeat
  140.   when action = '=2' then nop
  141.   when action = '=3' then nop
  142.   when action = '=4' then nop
  143.   when action = '=5' then nop
  144.   when action = '=6' then nop
  145.   when action = '=7' then nop
  146.   when action = '=8' then nop
  147.   when action = '=9' then do; log.returnRetry = 0; log.returnStatus = 'Sent+'; call updateLogEntry(mailbox, magicCookie); call aamaintenancemode(log.origmailbox); signal answerVoiceDone; end
  148.   when action = '=#' then signal answerVoiceDone
  149.   when action = '=*' then signal sendVoiceOK
  150.   when action = 4 then do; log.returnStatus = 'Fax?'; log.returnRetry = 0; signal sendVoiceDone; end
  151.   when action = 5 then do; log.returnStatus = 'Data?'; log.returnRetry = 0; signal sendVoiceDone; end
  152.   when action = 8 then do; if numTimes = 3 then signal sendVoiceAgain; else signal sendVoiceBusy; end
  153.   when action = 10 then nop
  154.   when action = 12 then do; log.returnStatus = 'Abort'; log.returnRetry = 0; signal sendVoiceDone; end
  155.   when action = 14 then do; log.returnStatus = 'Error'; log.returnRetry = 0; signal sendVoiceDone; end
  156.   when action = 16 then do; log.returnStatus = 'Error'; log.returnRetry = 0; signal sendVoiceDone; end
  157.   otherwise signal arexxerror
  158. end
  159.  
  160. numTimes = numTimes - 1
  161. if numTimes <= 0 then do
  162.   signal sendVoiceTimedOut
  163. end
  164. signal sendVoiceRepeat
  165.  
  166. sendVoiceTimedOut:
  167. log.returnStatus = 'Sent-TimedOut'
  168. log.returnRetry = 0
  169. signal sendVoiceDone
  170.  
  171. sendVoiceBusy:
  172. log.returnRetry = 0
  173. log.returnStatus = 'Sent-Busy'
  174. signal sendVoiceDone
  175.  
  176. sendVoiceOK:
  177. log.returnRetry = 0
  178. log.returnStatus = 'Sent+'
  179.  
  180. sendVoiceDone:
  181. if log.returnRetry > 0 then do
  182.   log.returnRetry = log.returnRetry - 1
  183.   log.time = cTime() + log.returnInterval * 60
  184. end
  185. call updateLogEntry(mailbox, magicCookie)
  186. exit
  187.  
  188. startup:
  189. /* Pressing 0 usually gets us here */
  190.  
  191. answerVoiceDone:
  192. /* Pressing * gets us here */
  193. exit
  194.  
  195. /* Going to send a fax file */
  196.  
  197. sendFax:
  198. options failat 50
  199. signal off syntax
  200. if ~show('p', 'REXX_GPFAX') then do
  201.   log.returnStatus = 'Fax Prog?'
  202.   log.returnRetry = 0
  203.   call updateLogEntry(mailbox, magiccookie)
  204. end
  205.  
  206. 'assumemode' 'Unknown'
  207.  
  208. address rexx_gpfax 'listen'
  209. address rexx_gpfax 'sendfax' log.filename 'to' log.returnnumber
  210. sendok = rc
  211. address rexx_gpfax 'reportlog' 'T' 3
  212. log.returnstatus = result
  213. if sendok < 5 then do; log.returnretry = 0; log.returnStatus = 'Sent+'; end
  214. else if sendok < 10 then do; log.returnretry = 0; log.returnStatus = 'Sent'; end
  215. else do; log.returnRetry = log.returnretry - 1; log.time = cTime() + log.returnInterval * 60; end
  216. call updateLogEntry(mailbox, magiccookie)
  217.  
  218. address rexx_gpfax 'unlisten'
  219.  
  220. 'delay' 5
  221. action = rc
  222. select
  223.   when action = 0 then nop
  224.   when action = 12 then signal stdabort
  225.   when action = 14 then signal stderror
  226.   when action = 16 then signal stderror
  227.   otherwise signal arexxerror
  228. end
  229.  
  230. 'writeline' 'AT+FCLASS=0'
  231.  
  232. 'readline' '2'
  233. action = rc
  234. if action = 0 then value = result
  235. select
  236.   when action = 0 then nop
  237.   when action = 10 then signal stdtimedout
  238.   when action = 12 then signal stdabort
  239.   when action = 14 then signal stderror
  240.   when action = 16 then signal stderror
  241.   otherwise signal arexxerror
  242. end
  243.  
  244. 'readline' '2'
  245. action = rc
  246. if action = 0 then value = result
  247. select
  248.   when action = 0 then nop
  249.   when action = 10 then signal stdtimedout
  250.   when action = 12 then signal stdabort
  251.   when action = 14 then signal stderror
  252.   when action = 16 then signal stderror
  253.   otherwise signal arexxerror
  254. end
  255.  
  256. /* We're done sending a fax */
  257. exit
  258.  
  259. /* TITLE: avm:source/stdtail.avmsrc */
  260. /* This is the standard tail */
  261. exit
  262.  
  263. exit
  264.  
  265. mailboxDir: procedure
  266.     parse arg mailbox
  267.  
  268.     return 'avm:' || mailbox || '/'
  269.  
  270. logFile: procedure
  271.     parse arg mailbox, magiccookie
  272.  
  273.     return 'avm:' || mailbox || '/logs/' || magiccookie
  274.  
  275. voiceFile: procedure
  276.     parse arg mailbox, magiccookie
  277.  
  278.         if (verify(magiccookie, '/:', 'M') = 0) then
  279.           return 'avm:' || mailbox || '/voices/' || magiccookie
  280.         else
  281.           return magiccookie
  282.  
  283. makeUniqueFile: procedure
  284.     if arg() ~= 0 then do
  285.         rc = "makeUniqueFile: bad args"
  286.         signal error
  287.     end
  288.     return address() || '.' || date('i') || '.' || time('s') || '.' || random(1, 999, time('s'))
  289.  
  290. convertToDate: procedure
  291.     if arg() ~= 1 then do
  292.         rc = "convertToDate: bad args"
  293.         signal error
  294.     end
  295.     parse arg timeInC
  296.  
  297.     actualTime = (timeInC - (2922)*86400) // (86400)
  298.     actualDate = (timeInC - actualTime - 2922*86400) % 86400
  299.  
  300.     return actualDate /* returning it in 'internal' format */
  301.  
  302. convertToTime: procedure
  303.     if arg() ~= 1 then do
  304.         rc = "convertToTime: bad args"
  305.         signal error
  306.     end
  307.     parse arg timeInC
  308.     
  309.     actualTime = (timeInC - (2922)*86400) // (86400)
  310.  
  311.     return actualTime
  312.  
  313. cTime: procedure
  314.     /* 2922 = 8*365 + 2 */
  315.     /* 86400 = 24*60*60 */
  316.     return (date('i')+2922)*86400 + time('s')
  317.  
  318. /* this returns a handle that you must use after initializing log. */
  319. initLogEntry: procedure expose log.
  320.     if arg() ~= 0 then do
  321.         rc = "initLogEntry: bad args"
  322.         signal error
  323.     end
  324.     
  325.     drop log.
  326.         log. = ''
  327.  
  328.         acidname = getclip(address() || 'CIDNAME')
  329.         acidnumber = getclip(address() || 'CIDNUMBER')
  330.  
  331.     /* 2922 = 8*365 + 2 */
  332.     /* 86400 = 24*60*60 */
  333.     log.time = (date('i')+2922)*86400 + time('s')
  334.     log.cidname = acidname
  335.     log.cidnumber = acidnumber
  336.  
  337.     return
  338.  
  339. loadLogEntry: procedure expose log.
  340.     if arg() ~= 2 then do
  341.         rc = "loadLogEntry: bad args"
  342.         signal error
  343.     end
  344.     parse arg mailbox, handle
  345.  
  346.         drop log.
  347.         log. = ''
  348.  
  349.     if ~exists(mailboxDir(mailbox)) then do
  350.         call showDebugger('Dir=' || mailboxDir(mailbox) 'does not exist')
  351.         return
  352.     end
  353.  
  354.     opened = open(handle, logFile(mailbox, handle), 'r')
  355.         if opened then do
  356.         call showDebugger('Loading entry' logFile(mailbox, handle))
  357.         do while ~eof(handle)
  358.             line = readln(handle)
  359.             parse upper var line variable '=' value
  360.             log.variable = value
  361.         end
  362.         call close(handle)
  363.     end; else call showDebugger('Could not load' logFile(mailbox, handle))
  364.     return
  365.  
  366. /* pass a handle here */
  367. saveLogEntry: procedure expose log.
  368.     if arg() ~= 2 then do
  369.         rc = "saveLogEntry: bad args"
  370.         signal error
  371.     end
  372.     parse arg mailbox, handle
  373.  
  374.     if ~exists(mailboxDir(mailbox)) then do
  375.         call showDebugger('Dir=' || mailboxDir(mailbox) 'does not exist')
  376.         return
  377.     end
  378.  
  379.     opened = open(handle, logFile(mailbox, handle), 'w')
  380.  
  381.     if opened then do
  382.         call showDebugger('Saving entry' logFile(mailbox, handle))
  383.         call writeln(handle, 'TYPE=' || log.type)
  384.         call writeln(handle, 'TIME=' || log.time)
  385.         call writeln(handle, 'LENGTH=' || log.length)
  386.  
  387.         call writeln(handle, 'ORIGMAILBOX=' || log.origmailbox)
  388.  
  389.         call writeln(handle, 'CIDNAME=' || log.cidname)
  390.         call writeln(handle, 'CIDNUMBER=' || log.cidnumber)
  391.  
  392.         call writeln(handle, 'COMMENT=' || log.comment)
  393.  
  394.         call writeln(handle, 'FILENAME=' || log.filename)
  395.         call writeln(handle, 'ALTFILENAME=' || log.altfilename)
  396.  
  397.         call writeln(handle, 'RETURNNUMBER=' || log.returnnumber)
  398.         call writeln(handle, 'RETURNSENDFUNC=' || log.returnsendfunc)
  399.         call writeln(handle, 'RETURNSTATUS=' || log.returnstatus)
  400.  
  401.         call writeln(handle, 'RETURNRETRY=' || log.returnretry)
  402.         call writeln(handle, 'RETURNINTERVAL=' || log.returninterval)
  403.  
  404.         call close(handle)
  405.         address rexx 'broadcast' 'addtomailbox' mailbox handle
  406.     end; else call showDebugger('Could not save' logFile(mailbox, handle))
  407.  
  408.     return
  409.  
  410. /* pass a handle here */
  411. updateLogEntry: procedure expose log.
  412.     if arg() ~= 2 then do
  413.         rc = "updateLogEntry: bad args"
  414.         signal error
  415.     end
  416.     parse arg mailbox, handle
  417.  
  418.     if ~exists(mailboxDir(mailbox)) then do
  419.         call showDebugger('Dir=' || mailboxDir(mailbox) 'does not exist')
  420.         return
  421.     end
  422.  
  423.     if ~exists(logFile(mailbox, handle)) then do
  424.         call showDebugger('Unable to update non-existent' logFile(mailbox, handle))
  425.         return
  426.     end
  427.     opened = open(handle, logFile(mailbox, handle), 'w')
  428.  
  429.     if opened then do
  430.         call showDebugger('Updating entry' logFile(mailbox, handle))
  431.         call writeln(handle, 'TYPE=' || log.type)
  432.         call writeln(handle, 'TIME=' || log.time)
  433.         call writeln(handle, 'LENGTH=' || log.length)
  434.  
  435.         call writeln(handle, 'ORIGMAILBOX=' || log.origmailbox)
  436.  
  437.         call writeln(handle, 'CIDNAME=' || log.cidname)
  438.         call writeln(handle, 'CIDNUMBER=' || log.cidnumber)
  439.  
  440.         call writeln(handle, 'COMMENT=' || log.comment)
  441.  
  442.         call writeln(handle, 'FILENAME=' || log.filename)
  443.         call writeln(handle, 'ALTFILENAME=' || log.altfilename)
  444.  
  445.         call writeln(handle, 'RETURNNUMBER=' || log.returnnumber)
  446.         call writeln(handle, 'RETURNSENDFUNC=' || log.returnsendfunc)
  447.         call writeln(handle, 'RETURNSTATUS=' || log.returnstatus)
  448.  
  449.         call writeln(handle, 'RETURNRETRY=' || log.returnretry)
  450.         call writeln(handle, 'RETURNINTERVAL=' || log.returninterval)
  451.  
  452.         call close(handle)
  453.         address rexx 'broadcast' 'refreshmailboxentry' mailbox handle
  454.     end; else call showDebugger('Could not update' logFile(mailbox, handle))
  455.  
  456.     return
  457.  
  458.  
  459.  
  460. showDebugger: procedure
  461.     if arg() ~= 1 then do
  462.         say "showDebugger: ERROR"
  463.         exit 20
  464.     end
  465.  
  466.     parse arg debuggerInfo
  467.     
  468.     firstLine = sourceline(1)
  469.     parse var firstLine '/*' 'TITLE:' title '*/'
  470.     if showlist('p', 'AVMLOGGER') then
  471.         address 'AVMLOGGER' 'add' title ':' debuggerInfo
  472.     else
  473.         say title ':' debuggerInfo
  474.  
  475.     return 
  476.  
  477. /*-----------------------------------------------------------------------*/
  478. /*                         signal processing                             */
  479.  
  480. arexxerror:
  481. error:
  482.     call showDebugger("Error" rc "at line" sigl)
  483.     exit 20
  484.  
  485. break_c:
  486. halt:
  487.     call showDebugger("Halt/Break_C at line" sigl)
  488.     exit 20
  489.  
  490. novalue:
  491.     call showDebugger("No value at line" sigl)
  492.     exit 20
  493.  
  494. syntax:
  495.     call showDebugger("Syntax error" rc "at line" sigl)
  496.     exit 20
  497.  
  498. exit
  499.  
  500. /* this requires logfunctions.avm */
  501.  
  502. loadMailbox: procedure expose mailbox.
  503.     if arg() ~= 1 then do
  504.         rc = "loadMailbox: bad args"
  505.         signal error
  506.     end
  507.  
  508.         mailbox. = ''
  509.     parse arg mailbox
  510.  
  511.     handle = 'mailboxconfig'
  512.     opened = open(handle, mailboxDir(mailbox) || 'mailbox.cfg', 'r')
  513.     if opened then do
  514.         do while ~eof(handle)
  515.             line = readln(handle)
  516.             parse upper var line variable '=' value
  517.             mailbox.variable = value
  518.         end
  519.         call close(handle)
  520.     end
  521.     return
  522.  
  523. /* pass a handle here */
  524. saveMailbox: procedure expose mailbox.
  525.     if arg() ~= 1 then do
  526.         rc = "saveMailbox: bad args"
  527.         signal error
  528.     end
  529.     parse arg mailbox
  530.  
  531.     handle = 'mailboxconfig'
  532.     opened = open(handle, mailboxDir(mailbox) || 'mailbox.cfg', 'w')
  533.  
  534.     if opened then do
  535.         call writeln(handle, 'PASSWORD=' || mailbox.password)
  536.  
  537.         call writeln(handle, 'AUTOFAXFORWARDB=' || mailbox.autofaxforwardb)
  538.         call writeln(handle, 'AUTOFAXFORWARD=' || mailbox.autofaxforward)
  539.         call writeln(handle, 'AUTOFAXFORWARDSCRIPT=' || mailbox.autofaxforwardscript)
  540.  
  541.         call writeln(handle, 'AUTOFORWARDB=' || mailbox.autoforwardb)
  542.         call writeln(handle, 'AUTOFORWARDONDEMAND=' || mailbox.autoforwardondemand)
  543.         call writeln(handle, 'AUTOFORWARD=' || mailbox.autoforward)
  544.         call writeln(handle, 'AUTOFORWARDSCRIPT=' || mailbox.autoforwardscript)
  545.  
  546.         call writeln(handle, 'AUTOPAGEB=' || mailbox.autopageb)
  547.         call writeln(handle, 'AUTOPAGEONDEMAND=' || mailbox.autopageondemand)
  548.         call writeln(handle, 'AUTOPAGE=' || mailbox.autopage)
  549.         call writeln(handle, 'AUTOPAGESCRIPT=' || mailbox.autopagescript)
  550.  
  551.         call writeln(handle, 'AUTOALERTB=' || mailbox.autoalertb)
  552.         call writeln(handle, 'AUTOALERTONDEMAND=' || mailbox.autoalertondemand)
  553.         call writeln(handle, 'AUTOALERTSCRIPT=' || mailbox.autoalertscript)
  554.  
  555.         call close(handle)
  556.     end
  557.  
  558.     return
  559.  
  560. /* TITLE: avm:source/getnumber.avmsrc */
  561. getnumber:
  562. procedure
  563.  
  564. aagetnumberagain:
  565. 'playvoice' 'avm:voices/GetNumber'
  566. action = rc
  567. select
  568.   when action = 0 then nop
  569.   when action = 1 then nop
  570.   when action = 4 then signal stdfax
  571.   when action = 5 then signal stddata
  572.   when action = 8 then signal stdbusy
  573.   when action = 12 then signal stdabort
  574.   when action = 14 then signal stderror
  575.   when action = 16 then signal stderror
  576.   otherwise signal arexxerror
  577. end
  578.  
  579. 'readkeysuntil' '#' '15' '7'
  580. action = rc
  581. if action = 0 then value = result
  582. select
  583.   when action = 0 then do; number = value; end
  584.   when action = 4 then signal stdfax
  585.   when action = 5 then signal stddata
  586.   when action = 8 then signal stdbusy
  587.   when action = 10 then do; number = ''; end
  588.   when action = 12 then signal stdabort
  589.   when action = 14 then signal stderror
  590.   when action = 16 then signal stderror
  591.   otherwise signal arexxerror
  592. end
  593.  
  594. 'playvoice' 'avm:voices/NumberEntered'
  595. action = rc
  596. select
  597.   when action = 0 then nop
  598.   when action = 1 then nop
  599.   when action = 4 then signal stdfax
  600.   when action = 5 then signal stddata
  601.   when action = 8 then signal stdbusy
  602.   when action = 12 then signal stdabort
  603.   when action = 14 then signal stderror
  604.   when action = 16 then signal stderror
  605.   otherwise signal arexxerror
  606. end
  607.  
  608. call playNumber(number)
  609.  
  610. aagetnumbermenu:
  611. call aapresentmenu('avm:voices/numbercorrect', '02#*', '3')
  612. action = result
  613. select
  614.   when action = '=0' then signal aagetnumbermenu
  615.   when action = '=1' then nop
  616.   when action = '=2' then signal aagetnumberagain
  617.   when action = '=3' then nop
  618.   when action = '=4' then nop
  619.   when action = '=5' then nop
  620.   when action = '=6' then nop
  621.   when action = '=7' then nop
  622.   when action = '=8' then nop
  623.   when action = '=9' then nop
  624.   when action = '=#' then signal aagetnumberdone
  625.   when action = '=*' then signal answerVoiceDone
  626.   when action = 4 then signal stdfax
  627.   when action = 5 then signal stddata
  628.   when action = 8 then signal stdbusy
  629.   when action = 10 then do; number = ''; signal aagetnumberdone; end
  630.   when action = 12 then signal stdabort
  631.   when action = 14 then signal stderror
  632.   when action = 16 then signal stderror
  633.   otherwise signal arexxerror
  634. end
  635.  
  636. aagetnumberdone:
  637. /* We're done.  Number is in 'number' */
  638.  
  639. return number
  640.  
  641.  
  642. /* TITLE: avm:source/playnumber.avmsrc */
  643. playnumber:
  644. /* Cycle through value and play each symbol */
  645.  
  646. procedure
  647. parse arg number
  648. say 'playnumber' number
  649.  
  650. do i = 1 to length(number)
  651.   if pos(substr(number, i, 1), '0123456789') > 0 then
  652.     call playnumbranch('playnum' || substr(number, i, 1))
  653.   else if substr(number, i, 1) = '#' then
  654.     call playnumbranch('playnumpound')
  655.   else if substr(number, i, 1) = '*' then
  656.     call playnumbranch('playnumstar')
  657. end
  658. signal playnumdone
  659.  
  660. playnumbranch:
  661. procedure
  662. parse arg label
  663. signal value label
  664. return
  665.  
  666. playnum0:
  667. 'playvoice' 'avm:voices/number00'
  668. action = rc
  669. select
  670.   when action = 0 then nop
  671.   when action = 1 then nop
  672.   when action = 4 then signal stdfax
  673.   when action = 5 then signal stddata
  674.   when action = 8 then signal stdbusy
  675.   when action = 12 then signal stdabort
  676.   when action = 14 then signal stderror
  677.   when action = 16 then signal stderror
  678.   otherwise signal arexxerror
  679. end
  680. return
  681.  
  682. playnum1:
  683. 'playvoice' 'avm:voices/number01'
  684. action = rc
  685. select
  686.   when action = 0 then nop
  687.   when action = 1 then nop
  688.   when action = 4 then signal stdfax
  689.   when action = 5 then signal stddata
  690.   when action = 8 then signal stdbusy
  691.   when action = 12 then signal stdabort
  692.   when action = 14 then signal stderror
  693.   when action = 16 then signal stderror
  694.   otherwise signal arexxerror
  695. end
  696. return
  697.  
  698. playnum2:
  699. 'playvoice' 'avm:voices/number02'
  700. action = rc
  701. select
  702.   when action = 0 then nop
  703.   when action = 1 then nop
  704.   when action = 4 then signal stdfax
  705.   when action = 5 then signal stddata
  706.   when action = 8 then signal stdbusy
  707.   when action = 12 then signal stdabort
  708.   when action = 14 then signal stderror
  709.   when action = 16 then signal stderror
  710.   otherwise signal arexxerror
  711. end
  712. return
  713.  
  714. playnum3:
  715. 'playvoice' 'avm:voices/number03'
  716. action = rc
  717. select
  718.   when action = 0 then nop
  719.   when action = 1 then nop
  720.   when action = 4 then signal stdfax
  721.   when action = 5 then signal stddata
  722.   when action = 8 then signal stdbusy
  723.   when action = 12 then signal stdabort
  724.   when action = 14 then signal stderror
  725.   when action = 16 then signal stderror
  726.   otherwise signal arexxerror
  727. end
  728. return
  729.  
  730. playnum4:
  731. 'playvoice' 'avm:voices/number04'
  732. action = rc
  733. select
  734.   when action = 0 then nop
  735.   when action = 1 then nop
  736.   when action = 4 then signal stdfax
  737.   when action = 5 then signal stddata
  738.   when action = 8 then signal stdbusy
  739.   when action = 12 then signal stdabort
  740.   when action = 14 then signal stderror
  741.   when action = 16 then signal stderror
  742.   otherwise signal arexxerror
  743. end
  744. return
  745.  
  746. playnum5:
  747. 'playvoice' 'avm:voices/number05'
  748. action = rc
  749. select
  750.   when action = 0 then nop
  751.   when action = 1 then nop
  752.   when action = 4 then signal stdfax
  753.   when action = 5 then signal stddata
  754.   when action = 8 then signal stdbusy
  755.   when action = 12 then signal stdabort
  756.   when action = 14 then signal stderror
  757.   when action = 16 then signal stderror
  758.   otherwise signal arexxerror
  759. end
  760. return
  761.  
  762. playnum6:
  763. 'playvoice' 'avm:voices/number06'
  764. action = rc
  765. select
  766.   when action = 0 then nop
  767.   when action = 1 then nop
  768.   when action = 4 then signal stdfax
  769.   when action = 5 then signal stddata
  770.   when action = 8 then signal stdbusy
  771.   when action = 12 then signal stdabort
  772.   when action = 14 then signal stderror
  773.   when action = 16 then signal stderror
  774.   otherwise signal arexxerror
  775. end
  776. return
  777.  
  778. playnum7:
  779. 'playvoice' 'avm:voices/number07'
  780. action = rc
  781. select
  782.   when action = 0 then nop
  783.   when action = 1 then nop
  784.   when action = 4 then signal stdfax
  785.   when action = 5 then signal stddata
  786.   when action = 8 then signal stdbusy
  787.   when action = 12 then signal stdabort
  788.   when action = 14 then signal stderror
  789.   when action = 16 then signal stderror
  790.   otherwise signal arexxerror
  791. end
  792. return
  793.  
  794. playnum8:
  795. 'playvoice' 'avm:voices/number08'
  796. action = rc
  797. select
  798.   when action = 0 then nop
  799.   when action = 1 then nop
  800.   when action = 4 then signal stdfax
  801.   when action = 5 then signal stddata
  802.   when action = 8 then signal stdbusy
  803.   when action = 12 then signal stdabort
  804.   when action = 14 then signal stderror
  805.   when action = 16 then signal stderror
  806.   otherwise signal arexxerror
  807. end
  808. return
  809.  
  810. playnum9:
  811. 'playvoice' 'avm:voices/number09'
  812. action = rc
  813. select
  814.   when action = 0 then nop
  815.   when action = 1 then nop
  816.   when action = 4 then signal stdfax
  817.   when action = 5 then signal stddata
  818.   when action = 8 then signal stdbusy
  819.   when action = 12 then signal stdabort
  820.   when action = 14 then signal stderror
  821.   when action = 16 then signal stderror
  822.   otherwise signal arexxerror
  823. end
  824. return
  825.  
  826. playnumpound:
  827. 'playvoice' 'avm:voices/numberpound'
  828. action = rc
  829. select
  830.   when action = 0 then nop
  831.   when action = 1 then nop
  832.   when action = 4 then signal stdfax
  833.   when action = 5 then signal stddata
  834.   when action = 8 then signal stdbusy
  835.   when action = 12 then signal stdabort
  836.   when action = 14 then signal stderror
  837.   when action = 16 then signal stderror
  838.   otherwise signal arexxerror
  839. end
  840. return
  841.  
  842. playnumstar:
  843. 'playvoice' 'avm:voices/numberstar'
  844. action = rc
  845. select
  846.   when action = 0 then nop
  847.   when action = 1 then nop
  848.   when action = 4 then signal stdfax
  849.   when action = 5 then signal stddata
  850.   when action = 8 then signal stdbusy
  851.   when action = 12 then signal stdabort
  852.   when action = 14 then signal stderror
  853.   when action = 16 then signal stderror
  854.   otherwise signal arexxerror
  855. end
  856. return
  857.  
  858. playnumdone:
  859. /* We're done */
  860. return
  861.  
  862.  
  863. /* TITLE: avm:source/playddnumber.avmsrc */
  864. playddnumber:
  865. /* We're going to play a double digit number */
  866.  
  867. procedure
  868. parse arg number
  869. directdd = getclip('AVMDirectDDNumber')
  870. if upper(directdd) = 'YES' then signal playdirectdd
  871.  
  872. if number > 9 & number < 20 then
  873.   call playnumbranch('playnum' || number)
  874. else if number >= 20 & number < 60 then do
  875.   units = number // 10
  876.   tens = number - units
  877.   call playnumbranch('playnum' || tens)
  878.   if units > 0 then call playnumbranch('playnum' || units)
  879. end; else
  880.   call playnumber(number)
  881. signal playddnumdone
  882.  
  883. playdirectdd:
  884. if number < 10 then call playnumber(number)
  885. else call playnumbranch('playnum' || number)
  886. signal playddnumdone
  887.  
  888. playnum10:
  889. 'playvoice' 'avm:voices/number10'
  890. action = rc
  891. select
  892.   when action = 0 then nop
  893.   when action = 1 then nop
  894.   when action = 4 then signal stdfax
  895.   when action = 5 then signal stddata
  896.   when action = 8 then signal stdbusy
  897.   when action = 12 then signal stdabort
  898.   when action = 14 then signal stderror
  899.   when action = 16 then signal stderror
  900.   otherwise signal arexxerror
  901. end
  902. return
  903.  
  904. playnum11:
  905. 'playvoice' 'avm:voices/number11'
  906. action = rc
  907. select
  908.   when action = 0 then nop
  909.   when action = 1 then nop
  910.   when action = 4 then signal stdfax
  911.   when action = 5 then signal stddata
  912.   when action = 8 then signal stdbusy
  913.   when action = 12 then signal stdabort
  914.   when action = 14 then signal stderror
  915.   when action = 16 then signal stderror
  916.   otherwise signal arexxerror
  917. end
  918. return
  919.  
  920. playnum12:
  921. 'playvoice' 'avm:voices/number12'
  922. action = rc
  923. select
  924.   when action = 0 then nop
  925.   when action = 1 then nop
  926.   when action = 4 then signal stdfax
  927.   when action = 5 then signal stddata
  928.   when action = 8 then signal stdbusy
  929.   when action = 12 then signal stdabort
  930.   when action = 14 then signal stderror
  931.   when action = 16 then signal stderror
  932.   otherwise signal arexxerror
  933. end
  934. return
  935.  
  936. playnum13:
  937. 'playvoice' 'avm:voices/number13'
  938. action = rc
  939. select
  940.   when action = 0 then nop
  941.   when action = 1 then nop
  942.   when action = 4 then signal stdfax
  943.   when action = 5 then signal stddata
  944.   when action = 8 then signal stdbusy
  945.   when action = 12 then signal stdabort
  946.   when action = 14 then signal stderror
  947.   when action = 16 then signal stderror
  948.   otherwise signal arexxerror
  949. end
  950. return
  951.  
  952. playnum14:
  953. 'playvoice' 'avm:voices/number14'
  954. action = rc
  955. select
  956.   when action = 0 then nop
  957.   when action = 1 then nop
  958.   when action = 4 then signal stdfax
  959.   when action = 5 then signal stddata
  960.   when action = 8 then signal stdbusy
  961.   when action = 12 then signal stdabort
  962.   when action = 14 then signal stderror
  963.   when action = 16 then signal stderror
  964.   otherwise signal arexxerror
  965. end
  966. return
  967.  
  968. playnum15:
  969. 'playvoice' 'avm:voices/number15'
  970. action = rc
  971. select
  972.   when action = 0 then nop
  973.   when action = 1 then nop
  974.   when action = 4 then signal stdfax
  975.   when action = 5 then signal stddata
  976.   when action = 8 then signal stdbusy
  977.   when action = 12 then signal stdabort
  978.   when action = 14 then signal stderror
  979.   when action = 16 then signal stderror
  980.   otherwise signal arexxerror
  981. end
  982. return
  983.  
  984. playnum16:
  985. 'playvoice' 'avm:voices/number16'
  986. action = rc
  987. select
  988.   when action = 0 then nop
  989.   when action = 1 then nop
  990.   when action = 4 then signal stdfax
  991.   when action = 5 then signal stddata
  992.   when action = 8 then signal stdbusy
  993.   when action = 12 then signal stdabort
  994.   when action = 14 then signal stderror
  995.   when action = 16 then signal stderror
  996.   otherwise signal arexxerror
  997. end
  998. return
  999.  
  1000. playnum17:
  1001. 'playvoice' 'avm:voices/number17'
  1002. action = rc
  1003. select
  1004.   when action = 0 then nop
  1005.   when action = 1 then nop
  1006.   when action = 4 then signal stdfax
  1007.   when action = 5 then signal stddata
  1008.   when action = 8 then signal stdbusy
  1009.   when action = 12 then signal stdabort
  1010.   when action = 14 then signal stderror
  1011.   when action = 16 then signal stderror
  1012.   otherwise signal arexxerror
  1013. end
  1014. return
  1015.  
  1016. playnum18:
  1017. 'playvoice' 'avm:voices/number18'
  1018. action = rc
  1019. select
  1020.   when action = 0 then nop
  1021.   when action = 1 then nop
  1022.   when action = 4 then signal stdfax
  1023.   when action = 5 then signal stddata
  1024.   when action = 8 then signal stdbusy
  1025.   when action = 12 then signal stdabort
  1026.   when action = 14 then signal stderror
  1027.   when action = 16 then signal stderror
  1028.   otherwise signal arexxerror
  1029. end
  1030. return
  1031.  
  1032. playnum19:
  1033. 'playvoice' 'avm:voices/number19'
  1034. action = rc
  1035. select
  1036.   when action = 0 then nop
  1037.   when action = 1 then nop
  1038.   when action = 4 then signal stdfax
  1039.   when action = 5 then signal stddata
  1040.   when action = 8 then signal stdbusy
  1041.   when action = 12 then signal stdabort
  1042.   when action = 14 then signal stderror
  1043.   when action = 16 then signal stderror
  1044.   otherwise signal arexxerror
  1045. end
  1046. return
  1047.  
  1048. playnum20:
  1049. 'playvoice' 'avm:voices/number20'
  1050. action = rc
  1051. select
  1052.   when action = 0 then nop
  1053.   when action = 1 then nop
  1054.   when action = 4 then signal stdfax
  1055.   when action = 5 then signal stddata
  1056.   when action = 8 then signal stdbusy
  1057.   when action = 12 then signal stdabort
  1058.   when action = 14 then signal stderror
  1059.   when action = 16 then signal stderror
  1060.   otherwise signal arexxerror
  1061. end
  1062. return
  1063.  
  1064. playnum30:
  1065. 'playvoice' 'avm:voices/number30'
  1066. action = rc
  1067. select
  1068.   when action = 0 then nop
  1069.   when action = 1 then nop
  1070.   when action = 4 then signal stdfax
  1071.   when action = 5 then signal stddata
  1072.   when action = 8 then signal stdbusy
  1073.   when action = 12 then signal stdabort
  1074.   when action = 14 then signal stderror
  1075.   when action = 16 then signal stderror
  1076.   otherwise signal arexxerror
  1077. end
  1078. return
  1079.  
  1080. playnum40:
  1081. 'playvoice' 'avm:voices/number40'
  1082. action = rc
  1083. select
  1084.   when action = 0 then nop
  1085.   when action = 1 then nop
  1086.   when action = 4 then signal stdfax
  1087.   when action = 5 then signal stddata
  1088.   when action = 8 then signal stdbusy
  1089.   when action = 12 then signal stdabort
  1090.   when action = 14 then signal stderror
  1091.   when action = 16 then signal stderror
  1092.   otherwise signal arexxerror
  1093. end
  1094. return
  1095.  
  1096. playnum50:
  1097. 'playvoice' 'avm:voices/number50'
  1098. action = rc
  1099. select
  1100.   when action = 0 then nop
  1101.   when action = 1 then nop
  1102.   when action = 4 then signal stdfax
  1103.   when action = 5 then signal stddata
  1104.   when action = 8 then signal stdbusy
  1105.   when action = 12 then signal stdabort
  1106.   when action = 14 then signal stderror
  1107.   when action = 16 then signal stderror
  1108.   otherwise signal arexxerror
  1109. end
  1110. return
  1111.  
  1112. playddnumdone:
  1113. /* We're done */
  1114. return
  1115.  
  1116. playnum21:
  1117. 'playvoice' 'avm:voices/number21'
  1118. action = rc
  1119. select
  1120.   when action = 0 then nop
  1121.   when action = 1 then nop
  1122.   when action = 4 then signal stdfax
  1123.   when action = 5 then signal stddata
  1124.   when action = 8 then signal stdbusy
  1125.   when action = 12 then signal stdabort
  1126.   when action = 14 then signal stderror
  1127.   when action = 16 then signal stderror
  1128.   otherwise signal arexxerror
  1129. end
  1130. return
  1131.  
  1132. playnum22:
  1133. 'playvoice' 'avm:voices/number22'
  1134. action = rc
  1135. select
  1136.   when action = 0 then nop
  1137.   when action = 1 then nop
  1138.   when action = 4 then signal stdfax
  1139.   when action = 5 then signal stddata
  1140.   when action = 8 then signal stdbusy
  1141.   when action = 12 then signal stdabort
  1142.   when action = 14 then signal stderror
  1143.   when action = 16 then signal stderror
  1144.   otherwise signal arexxerror
  1145. end
  1146. return
  1147.  
  1148. playnum23:
  1149. 'playvoice' 'avm:voices/number23'
  1150. action = rc
  1151. select
  1152.   when action = 0 then nop
  1153.   when action = 1 then nop
  1154.   when action = 4 then signal stdfax
  1155.   when action = 5 then signal stddata
  1156.   when action = 8 then signal stdbusy
  1157.   when action = 12 then signal stdabort
  1158.   when action = 14 then signal stderror
  1159.   when action = 16 then signal stderror
  1160.   otherwise signal arexxerror
  1161. end
  1162. return
  1163.  
  1164. playnum24:
  1165. 'playvoice' 'avm:voices/number24'
  1166. action = rc
  1167. select
  1168.   when action = 0 then nop
  1169.   when action = 1 then nop
  1170.   when action = 4 then signal stdfax
  1171.   when action = 5 then signal stddata
  1172.   when action = 8 then signal stdbusy
  1173.   when action = 12 then signal stdabort
  1174.   when action = 14 then signal stderror
  1175.   when action = 16 then signal stderror
  1176.   otherwise signal arexxerror
  1177. end
  1178. return
  1179.  
  1180. playnum25:
  1181. 'playvoice' 'avm:voices/number25'
  1182. action = rc
  1183. select
  1184.   when action = 0 then nop
  1185.   when action = 1 then nop
  1186.   when action = 4 then signal stdfax
  1187.   when action = 5 then signal stddata
  1188.   when action = 8 then signal stdbusy
  1189.   when action = 12 then signal stdabort
  1190.   when action = 14 then signal stderror
  1191.   when action = 16 then signal stderror
  1192.   otherwise signal arexxerror
  1193. end
  1194. return
  1195.  
  1196. playnum26:
  1197. 'playvoice' 'avm:voices/number26'
  1198. action = rc
  1199. select
  1200.   when action = 0 then nop
  1201.   when action = 1 then nop
  1202.   when action = 4 then signal stdfax
  1203.   when action = 5 then signal stddata
  1204.   when action = 8 then signal stdbusy
  1205.   when action = 12 then signal stdabort
  1206.   when action = 14 then signal stderror
  1207.   when action = 16 then signal stderror
  1208.   otherwise signal arexxerror
  1209. end
  1210. return
  1211.  
  1212. playnum27:
  1213. 'playvoice' 'avm:voices/number27'
  1214. action = rc
  1215. select
  1216.   when action = 0 then nop
  1217.   when action = 1 then nop
  1218.   when action = 4 then signal stdfax
  1219.   when action = 5 then signal stddata
  1220.   when action = 8 then signal stdbusy
  1221.   when action = 12 then signal stdabort
  1222.   when action = 14 then signal stderror
  1223.   when action = 16 then signal stderror
  1224.   otherwise signal arexxerror
  1225. end
  1226. return
  1227.  
  1228. playnum28:
  1229. 'playvoice' 'avm:voices/number28'
  1230. action = rc
  1231. select
  1232.   when action = 0 then nop
  1233.   when action = 1 then nop
  1234.   when action = 4 then signal stdfax
  1235.   when action = 5 then signal stddata
  1236.   when action = 8 then signal stdbusy
  1237.   when action = 12 then signal stdabort
  1238.   when action = 14 then signal stderror
  1239.   when action = 16 then signal stderror
  1240.   otherwise signal arexxerror
  1241. end
  1242. return
  1243.  
  1244. playnum29:
  1245. 'playvoice' 'avm:voices/number29'
  1246. action = rc
  1247. select
  1248.   when action = 0 then nop
  1249.   when action = 1 then nop
  1250.   when action = 4 then signal stdfax
  1251.   when action = 5 then signal stddata
  1252.   when action = 8 then signal stdbusy
  1253.   when action = 12 then signal stdabort
  1254.   when action = 14 then signal stderror
  1255.   when action = 16 then signal stderror
  1256.   otherwise signal arexxerror
  1257. end
  1258. return
  1259.  
  1260. playnum31:
  1261. 'playvoice' 'avm:voices/number31'
  1262. action = rc
  1263. select
  1264.   when action = 0 then nop
  1265.   when action = 1 then nop
  1266.   when action = 4 then signal stdfax
  1267.   when action = 5 then signal stddata
  1268.   when action = 8 then signal stdbusy
  1269.   when action = 12 then signal stdabort
  1270.   when action = 14 then signal stderror
  1271.   when action = 16 then signal stderror
  1272.   otherwise signal arexxerror
  1273. end
  1274. return
  1275.  
  1276. playnum32:
  1277. 'playvoice' 'avm:voices/number32'
  1278. action = rc
  1279. select
  1280.   when action = 0 then nop
  1281.   when action = 1 then nop
  1282.   when action = 4 then signal stdfax
  1283.   when action = 5 then signal stddata
  1284.   when action = 8 then signal stdbusy
  1285.   when action = 12 then signal stdabort
  1286.   when action = 14 then signal stderror
  1287.   when action = 16 then signal stderror
  1288.   otherwise signal arexxerror
  1289. end
  1290. return
  1291.  
  1292. playnum33:
  1293. 'playvoice' 'avm:voices/number33'
  1294. action = rc
  1295. select
  1296.   when action = 0 then nop
  1297.   when action = 1 then nop
  1298.   when action = 4 then signal stdfax
  1299.   when action = 5 then signal stddata
  1300.   when action = 8 then signal stdbusy
  1301.   when action = 12 then signal stdabort
  1302.   when action = 14 then signal stderror
  1303.   when action = 16 then signal stderror
  1304.   otherwise signal arexxerror
  1305. end
  1306. return
  1307.  
  1308. playnum34:
  1309. 'playvoice' 'avm:voices/number34'
  1310. action = rc
  1311. select
  1312.   when action = 0 then nop
  1313.   when action = 1 then nop
  1314.   when action = 4 then signal stdfax
  1315.   when action = 5 then signal stddata
  1316.   when action = 8 then signal stdbusy
  1317.   when action = 12 then signal stdabort
  1318.   when action = 14 then signal stderror
  1319.   when action = 16 then signal stderror
  1320.   otherwise signal arexxerror
  1321. end
  1322. return
  1323.  
  1324. playnum35:
  1325. 'playvoice' 'avm:voices/number35'
  1326. action = rc
  1327. select
  1328.   when action = 0 then nop
  1329.   when action = 1 then nop
  1330.   when action = 4 then signal stdfax
  1331.   when action = 5 then signal stddata
  1332.   when action = 8 then signal stdbusy
  1333.   when action = 12 then signal stdabort
  1334.   when action = 14 then signal stderror
  1335.   when action = 16 then signal stderror
  1336.   otherwise signal arexxerror
  1337. end
  1338. return
  1339.  
  1340. playnum36:
  1341. 'playvoice' 'avm:voices/number36'
  1342. action = rc
  1343. select
  1344.   when action = 0 then nop
  1345.   when action = 1 then nop
  1346.   when action = 4 then signal stdfax
  1347.   when action = 5 then signal stddata
  1348.   when action = 8 then signal stdbusy
  1349.   when action = 12 then signal stdabort
  1350.   when action = 14 then signal stderror
  1351.   when action = 16 then signal stderror
  1352.   otherwise signal arexxerror
  1353. end
  1354. return
  1355.  
  1356. playnum37:
  1357. 'playvoice' 'avm:voices/number37'
  1358. action = rc
  1359. select
  1360.   when action = 0 then nop
  1361.   when action = 1 then nop
  1362.   when action = 4 then signal stdfax
  1363.   when action = 5 then signal stddata
  1364.   when action = 8 then signal stdbusy
  1365.   when action = 12 then signal stdabort
  1366.   when action = 14 then signal stderror
  1367.   when action = 16 then signal stderror
  1368.   otherwise signal arexxerror
  1369. end
  1370. return
  1371.  
  1372. playnum38:
  1373. 'playvoice' 'avm:voices/number38'
  1374. action = rc
  1375. select
  1376.   when action = 0 then nop
  1377.   when action = 1 then nop
  1378.   when action = 4 then signal stdfax
  1379.   when action = 5 then signal stddata
  1380.   when action = 8 then signal stdbusy
  1381.   when action = 12 then signal stdabort
  1382.   when action = 14 then signal stderror
  1383.   when action = 16 then signal stderror
  1384.   otherwise signal arexxerror
  1385. end
  1386. return
  1387.  
  1388. playnum39:
  1389. 'playvoice' 'avm:voices/number39'
  1390. action = rc
  1391. select
  1392.   when action = 0 then nop
  1393.   when action = 1 then nop
  1394.   when action = 4 then signal stdfax
  1395.   when action = 5 then signal stddata
  1396.   when action = 8 then signal stdbusy
  1397.   when action = 12 then signal stdabort
  1398.   when action = 14 then signal stderror
  1399.   when action = 16 then signal stderror
  1400.   otherwise signal arexxerror
  1401. end
  1402. return
  1403.  
  1404. playnum41:
  1405. 'playvoice' 'avm:voices/number41'
  1406. action = rc
  1407. select
  1408.   when action = 0 then nop
  1409.   when action = 1 then nop
  1410.   when action = 4 then signal stdfax
  1411.   when action = 5 then signal stddata
  1412.   when action = 8 then signal stdbusy
  1413.   when action = 12 then signal stdabort
  1414.   when action = 14 then signal stderror
  1415.   when action = 16 then signal stderror
  1416.   otherwise signal arexxerror
  1417. end
  1418. return
  1419.  
  1420. playnum42:
  1421. 'playvoice' 'avm:voices/number42'
  1422. action = rc
  1423. select
  1424.   when action = 0 then nop
  1425.   when action = 1 then nop
  1426.   when action = 4 then signal stdfax
  1427.   when action = 5 then signal stddata
  1428.   when action = 8 then signal stdbusy
  1429.   when action = 12 then signal stdabort
  1430.   when action = 14 then signal stderror
  1431.   when action = 16 then signal stderror
  1432.   otherwise signal arexxerror
  1433. end
  1434. return
  1435.  
  1436. playnum43:
  1437. 'playvoice' 'avm:voices/number43'
  1438. action = rc
  1439. select
  1440.   when action = 0 then nop
  1441.   when action = 1 then nop
  1442.   when action = 4 then signal stdfax
  1443.   when action = 5 then signal stddata
  1444.   when action = 8 then signal stdbusy
  1445.   when action = 12 then signal stdabort
  1446.   when action = 14 then signal stderror
  1447.   when action = 16 then signal stderror
  1448.   otherwise signal arexxerror
  1449. end
  1450. return
  1451.  
  1452. playnum44:
  1453. 'playvoice' 'avm:voices/number44'
  1454. action = rc
  1455. select
  1456.   when action = 0 then nop
  1457.   when action = 1 then nop
  1458.   when action = 4 then signal stdfax
  1459.   when action = 5 then signal stddata
  1460.   when action = 8 then signal stdbusy
  1461.   when action = 12 then signal stdabort
  1462.   when action = 14 then signal stderror
  1463.   when action = 16 then signal stderror
  1464.   otherwise signal arexxerror
  1465. end
  1466. return
  1467.  
  1468. playnum45:
  1469. 'playvoice' 'avm:voices/number45'
  1470. action = rc
  1471. select
  1472.   when action = 0 then nop
  1473.   when action = 1 then nop
  1474.   when action = 4 then signal stdfax
  1475.   when action = 5 then signal stddata
  1476.   when action = 8 then signal stdbusy
  1477.   when action = 12 then signal stdabort
  1478.   when action = 14 then signal stderror
  1479.   when action = 16 then signal stderror
  1480.   otherwise signal arexxerror
  1481. end
  1482. return
  1483.  
  1484. playnum46:
  1485. 'playvoice' 'avm:voices/number46'
  1486. action = rc
  1487. select
  1488.   when action = 0 then nop
  1489.   when action = 1 then nop
  1490.   when action = 4 then signal stdfax
  1491.   when action = 5 then signal stddata
  1492.   when action = 8 then signal stdbusy
  1493.   when action = 12 then signal stdabort
  1494.   when action = 14 then signal stderror
  1495.   when action = 16 then signal stderror
  1496.   otherwise signal arexxerror
  1497. end
  1498. return
  1499.  
  1500. playnum47:
  1501. 'playvoice' 'avm:voices/number47'
  1502. action = rc
  1503. select
  1504.   when action = 0 then nop
  1505.   when action = 1 then nop
  1506.   when action = 4 then signal stdfax
  1507.   when action = 5 then signal stddata
  1508.   when action = 8 then signal stdbusy
  1509.   when action = 12 then signal stdabort
  1510.   when action = 14 then signal stderror
  1511.   when action = 16 then signal stderror
  1512.   otherwise signal arexxerror
  1513. end
  1514. return
  1515.  
  1516. playnum48:
  1517. 'playvoice' 'avm:voices/number48'
  1518. action = rc
  1519. select
  1520.   when action = 0 then nop
  1521.   when action = 1 then nop
  1522.   when action = 4 then signal stdfax
  1523.   when action = 5 then signal stddata
  1524.   when action = 8 then signal stdbusy
  1525.   when action = 12 then signal stdabort
  1526.   when action = 14 then signal stderror
  1527.   when action = 16 then signal stderror
  1528.   otherwise signal arexxerror
  1529. end
  1530. return
  1531.  
  1532. playnum49:
  1533. 'playvoice' 'avm:voices/number49'
  1534. action = rc
  1535. select
  1536.   when action = 0 then nop
  1537.   when action = 1 then nop
  1538.   when action = 4 then signal stdfax
  1539.   when action = 5 then signal stddata
  1540.   when action = 8 then signal stdbusy
  1541.   when action = 12 then signal stdabort
  1542.   when action = 14 then signal stderror
  1543.   when action = 16 then signal stderror
  1544.   otherwise signal arexxerror
  1545. end
  1546. return
  1547.  
  1548. playnum51:
  1549. 'playvoice' 'avm:voices/number51'
  1550. action = rc
  1551. select
  1552.   when action = 0 then nop
  1553.   when action = 1 then nop
  1554.   when action = 4 then signal stdfax
  1555.   when action = 5 then signal stddata
  1556.   when action = 8 then signal stdbusy
  1557.   when action = 12 then signal stdabort
  1558.   when action = 14 then signal stderror
  1559.   when action = 16 then signal stderror
  1560.   otherwise signal arexxerror
  1561. end
  1562. return
  1563.  
  1564. playnum52:
  1565. 'playvoice' 'avm:voices/number52'
  1566. action = rc
  1567. select
  1568.   when action = 0 then nop
  1569.   when action = 1 then nop
  1570.   when action = 4 then signal stdfax
  1571.   when action = 5 then signal stddata
  1572.   when action = 8 then signal stdbusy
  1573.   when action = 12 then signal stdabort
  1574.   when action = 14 then signal stderror
  1575.   when action = 16 then signal stderror
  1576.   otherwise signal arexxerror
  1577. end
  1578. return
  1579.  
  1580. playnum53:
  1581. 'playvoice' 'avm:voices/number53'
  1582. action = rc
  1583. select
  1584.   when action = 0 then nop
  1585.   when action = 1 then nop
  1586.   when action = 4 then signal stdfax
  1587.   when action = 5 then signal stddata
  1588.   when action = 8 then signal stdbusy
  1589.   when action = 12 then signal stdabort
  1590.   when action = 14 then signal stderror
  1591.   when action = 16 then signal stderror
  1592.   otherwise signal arexxerror
  1593. end
  1594. return
  1595.  
  1596. playnum54:
  1597. 'playvoice' 'avm:voices/number54'
  1598. action = rc
  1599. select
  1600.   when action = 0 then nop
  1601.   when action = 1 then nop
  1602.   when action = 4 then signal stdfax
  1603.   when action = 5 then signal stddata
  1604.   when action = 8 then signal stdbusy
  1605.   when action = 12 then signal stdabort
  1606.   when action = 14 then signal stderror
  1607.   when action = 16 then signal stderror
  1608.   otherwise signal arexxerror
  1609. end
  1610. return
  1611.  
  1612. playnum55:
  1613. 'playvoice' 'avm:voices/number55'
  1614. action = rc
  1615. select
  1616.   when action = 0 then nop
  1617.   when action = 1 then nop
  1618.   when action = 4 then signal stdfax
  1619.   when action = 5 then signal stddata
  1620.   when action = 8 then signal stdbusy
  1621.   when action = 12 then signal stdabort
  1622.   when action = 14 then signal stderror
  1623.   when action = 16 then signal stderror
  1624.   otherwise signal arexxerror
  1625. end
  1626. return
  1627.  
  1628. playnum56:
  1629. 'playvoice' 'avm:voices/number56'
  1630. action = rc
  1631. select
  1632.   when action = 0 then nop
  1633.   when action = 1 then nop
  1634.   when action = 4 then signal stdfax
  1635.   when action = 5 then signal stddata
  1636.   when action = 8 then signal stdbusy
  1637.   when action = 12 then signal stdabort
  1638.   when action = 14 then signal stderror
  1639.   when action = 16 then signal stderror
  1640.   otherwise signal arexxerror
  1641. end
  1642. return
  1643.  
  1644. playnum57:
  1645. 'playvoice' 'avm:voices/number57'
  1646. action = rc
  1647. select
  1648.   when action = 0 then nop
  1649.   when action = 1 then nop
  1650.   when action = 4 then signal stdfax
  1651.   when action = 5 then signal stddata
  1652.   when action = 8 then signal stdbusy
  1653.   when action = 12 then signal stdabort
  1654.   when action = 14 then signal stderror
  1655.   when action = 16 then signal stderror
  1656.   otherwise signal arexxerror
  1657. end
  1658. return
  1659.  
  1660. playnum58:
  1661. 'playvoice' 'avm:voices/number58'
  1662. action = rc
  1663. select
  1664.   when action = 0 then nop
  1665.   when action = 1 then nop
  1666.   when action = 4 then signal stdfax
  1667.   when action = 5 then signal stddata
  1668.   when action = 8 then signal stdbusy
  1669.   when action = 12 then signal stdabort
  1670.   when action = 14 then signal stderror
  1671.   when action = 16 then signal stderror
  1672.   otherwise signal arexxerror
  1673. end
  1674. return
  1675.  
  1676. playnum59:
  1677. 'playvoice' 'avm:voices/number59'
  1678. action = rc
  1679. select
  1680.   when action = 0 then nop
  1681.   when action = 1 then nop
  1682.   when action = 4 then signal stdfax
  1683.   when action = 5 then signal stddata
  1684.   when action = 8 then signal stdbusy
  1685.   when action = 12 then signal stdabort
  1686.   when action = 14 then signal stderror
  1687.   when action = 16 then signal stderror
  1688.   otherwise signal arexxerror
  1689. end
  1690. return
  1691.  
  1692.  
  1693. /* TITLE: avm:source/playtime.avmsrc */
  1694. playtime:
  1695. procedure
  1696. parse arg secs
  1697. hours = secs % (60*60)
  1698. minutes = (secs - (hours * 60 * 60)) % 60
  1699. if hours < 12 then pm = 0
  1700. else do; pm = 1; hours = hours - 12; end
  1701. if hours = 0 then hours = 12
  1702. timeformat = getclip('AVMTimeFormat')
  1703. if timeformat = "" then timeformat = '%hours12 %minutes %pm'
  1704.  
  1705. do i = 1 to words(timeformat)
  1706.   if upper(word(timeformat, i)) = '%HOURS12' then
  1707.     call playddnumber(hours)
  1708.   else if upper(word(timeformat, i)) = '%HOURS24' then
  1709.     call playddnumber(hours + (pm * 12))
  1710.   else if upper(word(timeformat, i)) = '%MINUTES' then
  1711.     call playddnumber(minutes)
  1712.   else if upper(word(timeformat, i)) = '%PM' then
  1713.     do
  1714.  
  1715.       if pm then call playnumbranch('playtimepm')
  1716.       else call playnumbranch('playtimeam')
  1717.     end
  1718.   else
  1719.     call playddvoice(word(timeformat, i))
  1720. end
  1721.  
  1722. /* We're done */
  1723. return
  1724.  
  1725. playtimeam:
  1726. 'playvoice' 'avm:voices/timeam'
  1727. action = rc
  1728. select
  1729.   when action = 0 then nop
  1730.   when action = 1 then nop
  1731.   when action = 4 then signal stdfax
  1732.   when action = 5 then signal stddata
  1733.   when action = 8 then signal stdbusy
  1734.   when action = 12 then signal stdabort
  1735.   when action = 14 then signal stderror
  1736.   when action = 16 then signal stderror
  1737.   otherwise signal arexxerror
  1738. end
  1739. return
  1740.  
  1741. playtimepm:
  1742. 'playvoice' 'avm:voices/timepm'
  1743. action = rc
  1744. select
  1745.   when action = 0 then nop
  1746.   when action = 1 then nop
  1747.   when action = 4 then signal stdfax
  1748.   when action = 5 then signal stddata
  1749.   when action = 8 then signal stdbusy
  1750.   when action = 12 then signal stdabort
  1751.   when action = 14 then signal stderror
  1752.   when action = 16 then signal stderror
  1753.   otherwise signal arexxerror
  1754. end
  1755. return
  1756.  
  1757.  
  1758. /* TITLE: avm:source/playdate.avmsrc */
  1759. playdate:
  1760. /* We're going to play the month and day */
  1761.  
  1762. procedure
  1763. parse arg actualDate
  1764.  
  1765. dateformat = getclip('AVMDateFormat')
  1766. if dateformat = "" then dateformat = "%month %day"
  1767. else if upper(dateformat) = "NONE" then dateformat = ""
  1768.  
  1769. do i = 1 to words(dateformat)
  1770.   if upper(word(dateformat, i)) = "%MONTH" then
  1771.     call playnumbranch('playdate' || substr(actualDate, 5, 2))
  1772.   else if upper(word(dateformat, i)) = "%DAY" then
  1773.     call playddnumber(substr(actualDate, 7, 2))
  1774.   else
  1775.     call playddvoice(word(dateformat, i))
  1776. end
  1777.  
  1778. /* We're done */
  1779. return
  1780.  
  1781. playddvoice:
  1782. procedure
  1783. parse arg filename
  1784.  
  1785. 'playvoice' filename
  1786. action = rc
  1787. select
  1788.   when action = 0 then nop
  1789.   when action = 1 then nop
  1790.   when action = 4 then signal stdfax
  1791.   when action = 5 then signal stddata
  1792.   when action = 8 then signal stdbusy
  1793.   when action = 12 then signal stdabort
  1794.   when action = 14 then signal stderror
  1795.   when action = 16 then signal stderror
  1796.   otherwise signal arexxerror
  1797. end
  1798. return
  1799.  
  1800. playdate01:
  1801. 'playvoice' 'avm:voices/monthjanuary'
  1802. action = rc
  1803. select
  1804.   when action = 0 then nop
  1805.   when action = 1 then nop
  1806.   when action = 4 then signal stdfax
  1807.   when action = 5 then signal stddata
  1808.   when action = 8 then signal stdbusy
  1809.   when action = 12 then signal stdabort
  1810.   when action = 14 then signal stderror
  1811.   when action = 16 then signal stderror
  1812.   otherwise signal arexxerror
  1813. end
  1814. return
  1815.  
  1816. playdate02:
  1817. 'playvoice' 'avm:voices/monthfebruary'
  1818. action = rc
  1819. select
  1820.   when action = 0 then nop
  1821.   when action = 1 then nop
  1822.   when action = 4 then signal stdfax
  1823.   when action = 5 then signal stddata
  1824.   when action = 8 then signal stdbusy
  1825.   when action = 12 then signal stdabort
  1826.   when action = 14 then signal stderror
  1827.   when action = 16 then signal stderror
  1828.   otherwise signal arexxerror
  1829. end
  1830. return
  1831.  
  1832. playdate03:
  1833. 'playvoice' 'avm:voices/monthmarch'
  1834. action = rc
  1835. select
  1836.   when action = 0 then nop
  1837.   when action = 1 then nop
  1838.   when action = 4 then signal stdfax
  1839.   when action = 5 then signal stddata
  1840.   when action = 8 then signal stdbusy
  1841.   when action = 12 then signal stdabort
  1842.   when action = 14 then signal stderror
  1843.   when action = 16 then signal stderror
  1844.   otherwise signal arexxerror
  1845. end
  1846. return
  1847.  
  1848. playdate04:
  1849. 'playvoice' 'avm:voices/monthapril'
  1850. action = rc
  1851. select
  1852.   when action = 0 then nop
  1853.   when action = 1 then nop
  1854.   when action = 4 then signal stdfax
  1855.   when action = 5 then signal stddata
  1856.   when action = 8 then signal stdbusy
  1857.   when action = 12 then signal stdabort
  1858.   when action = 14 then signal stderror
  1859.   when action = 16 then signal stderror
  1860.   otherwise signal arexxerror
  1861. end
  1862. return
  1863.  
  1864. playdate05:
  1865. 'playvoice' 'avm:voices/monthmay'
  1866. action = rc
  1867. select
  1868.   when action = 0 then nop
  1869.   when action = 1 then nop
  1870.   when action = 4 then signal stdfax
  1871.   when action = 5 then signal stddata
  1872.   when action = 8 then signal stdbusy
  1873.   when action = 12 then signal stdabort
  1874.   when action = 14 then signal stderror
  1875.   when action = 16 then signal stderror
  1876.   otherwise signal arexxerror
  1877. end
  1878. return
  1879.  
  1880. playdate06:
  1881. 'playvoice' 'avm:voices/monthjune'
  1882. action = rc
  1883. select
  1884.   when action = 0 then nop
  1885.   when action = 1 then nop
  1886.   when action = 4 then signal stdfax
  1887.   when action = 5 then signal stddata
  1888.   when action = 8 then signal stdbusy
  1889.   when action = 12 then signal stdabort
  1890.   when action = 14 then signal stderror
  1891.   when action = 16 then signal stderror
  1892.   otherwise signal arexxerror
  1893. end
  1894. return
  1895.  
  1896. playdate07:
  1897. 'playvoice' 'avm:voices/monthjuly'
  1898. action = rc
  1899. select
  1900.   when action = 0 then nop
  1901.   when action = 1 then nop
  1902.   when action = 4 then signal stdfax
  1903.   when action = 5 then signal stddata
  1904.   when action = 8 then signal stdbusy
  1905.   when action = 12 then signal stdabort
  1906.   when action = 14 then signal stderror
  1907.   when action = 16 then signal stderror
  1908.   otherwise signal arexxerror
  1909. end
  1910. return
  1911.  
  1912. playdate08:
  1913. 'playvoice' 'avm:voices/monthaugust'
  1914. action = rc
  1915. select
  1916.   when action = 0 then nop
  1917.   when action = 1 then nop
  1918.   when action = 4 then signal stdfax
  1919.   when action = 5 then signal stddata
  1920.   when action = 8 then signal stdbusy
  1921.   when action = 12 then signal stdabort
  1922.   when action = 14 then signal stderror
  1923.   when action = 16 then signal stderror
  1924.   otherwise signal arexxerror
  1925. end
  1926. return
  1927.  
  1928. playdate09:
  1929. 'playvoice' 'avm:voices/monthseptember'
  1930. action = rc
  1931. select
  1932.   when action = 0 then nop
  1933.   when action = 1 then nop
  1934.   when action = 4 then signal stdfax
  1935.   when action = 5 then signal stddata
  1936.   when action = 8 then signal stdbusy
  1937.   when action = 12 then signal stdabort
  1938.   when action = 14 then signal stderror
  1939.   when action = 16 then signal stderror
  1940.   otherwise signal arexxerror
  1941. end
  1942. return
  1943.  
  1944. playdate10:
  1945. 'playvoice' 'avm:voices/monthoctober'
  1946. action = rc
  1947. select
  1948.   when action = 0 then nop
  1949.   when action = 1 then nop
  1950.   when action = 4 then signal stdfax
  1951.   when action = 5 then signal stddata
  1952.   when action = 8 then signal stdbusy
  1953.   when action = 12 then signal stdabort
  1954.   when action = 14 then signal stderror
  1955.   when action = 16 then signal stderror
  1956.   otherwise signal arexxerror
  1957. end
  1958. return
  1959.  
  1960. playdate11:
  1961. 'playvoice' 'avm:voices/monthnovember'
  1962. action = rc
  1963. select
  1964.   when action = 0 then nop
  1965.   when action = 1 then nop
  1966.   when action = 4 then signal stdfax
  1967.   when action = 5 then signal stddata
  1968.   when action = 8 then signal stdbusy
  1969.   when action = 12 then signal stdabort
  1970.   when action = 14 then signal stderror
  1971.   when action = 16 then signal stderror
  1972.   otherwise signal arexxerror
  1973. end
  1974. return
  1975.  
  1976. playdate12:
  1977. 'playvoice' 'avm:voices/monthdecember'
  1978. action = rc
  1979. select
  1980.   when action = 0 then nop
  1981.   when action = 1 then nop
  1982.   when action = 4 then signal stdfax
  1983.   when action = 5 then signal stddata
  1984.   when action = 8 then signal stdbusy
  1985.   when action = 12 then signal stdabort
  1986.   when action = 14 then signal stderror
  1987.   when action = 16 then signal stderror
  1988.   otherwise signal arexxerror
  1989. end
  1990. return
  1991.  
  1992.  
  1993. /* TITLE: avm:source/recordmessage.avmsrc */
  1994. recordmessage:
  1995. procedure
  1996. parse arg filename
  1997.  
  1998. recordmessagesagain:
  1999. call aapresentmenu('avm:voices/RecordMessage', '0123#*', '3')
  2000. action = result
  2001. select
  2002.   when action = '=0' then signal recordmessageagain
  2003.   when action = '=1' then signal recordmessagesplay
  2004.   when action = '=2' then signal recordmessagesrecord
  2005.   when action = '=3' then signal recordmessagesdelete
  2006.   when action = '=4' then nop
  2007.   when action = '=5' then nop
  2008.   when action = '=6' then nop
  2009.   when action = '=7' then nop
  2010.   when action = '=8' then nop
  2011.   when action = '=9' then nop
  2012.   when action = '=#' then do; nop; end
  2013.   when action = '=*' then signal answerVoiceDone
  2014.   when action = 4 then signal stdfax
  2015.   when action = 5 then signal stddata
  2016.   when action = 8 then signal stdbusy
  2017.   when action = 10 then signal answerVoiceDone
  2018.   when action = 12 then signal stdabort
  2019.   when action = 14 then signal stderror
  2020.   when action = 16 then signal stderror
  2021.   otherwise signal arexxerror
  2022. end
  2023. return
  2024.  
  2025. recordmessagesplay:
  2026. 'playbeep' '3000' '0' '4'
  2027. action = rc
  2028. select
  2029.   when action = 0 then nop
  2030.   when action = 1 then nop
  2031.   when action = 4 then signal stdfax
  2032.   when action = 5 then signal stddata
  2033.   when action = 8 then signal stdbusy
  2034.   when action = 12 then signal stdabort
  2035.   when action = 14 then signal stderror
  2036.   when action = 16 then signal stderror
  2037.   otherwise signal arexxerror
  2038. end
  2039.  
  2040. 'playvoice' filename
  2041. action = rc
  2042. select
  2043.   when action = 0 then nop
  2044.   when action = 1 then nop
  2045.   when action = 4 then signal stdfax
  2046.   when action = 5 then signal stddata
  2047.   when action = 8 then signal stdbusy
  2048.   when action = 12 then signal stdabort
  2049.   when action = 14 then nop
  2050.   when action = 16 then nop
  2051.   otherwise signal arexxerror
  2052. end
  2053.  
  2054. 'flushphonebuffer'
  2055.  
  2056. 'playbeep' '3000' '0' '4'
  2057. action = rc
  2058. select
  2059.   when action = 0 then nop
  2060.   when action = 1 then nop
  2061.   when action = 4 then signal stdfax
  2062.   when action = 5 then signal stddata
  2063.   when action = 8 then signal stdbusy
  2064.   when action = 12 then signal stdabort
  2065.   when action = 14 then signal stderror
  2066.   when action = 16 then signal stderror
  2067.   otherwise signal arexxerror
  2068. end
  2069. signal recordmessagesagain
  2070.  
  2071. recordmessagesrecord:
  2072. 'playvoice' 'avm:voices/RecordMessagesRecord'
  2073. action = rc
  2074. select
  2075.   when action = 0 then nop
  2076.   when action = 1 then nop
  2077.   when action = 4 then signal stdfax
  2078.   when action = 5 then signal stddata
  2079.   when action = 8 then signal stdbusy
  2080.   when action = 12 then signal stdabort
  2081.   when action = 14 then signal stderror
  2082.   when action = 16 then signal stderror
  2083.   otherwise signal arexxerror
  2084. end
  2085.  
  2086. 'playbeep' '3000' '0' '4'
  2087. action = rc
  2088. select
  2089.   when action = 0 then nop
  2090.   when action = 1 then nop
  2091.   when action = 4 then signal stdfax
  2092.   when action = 5 then signal stddata
  2093.   when action = 8 then signal stdbusy
  2094.   when action = 12 then signal stdabort
  2095.   when action = 14 then signal stderror
  2096.   when action = 16 then signal stderror
  2097.   otherwise signal arexxerror
  2098. end
  2099.  
  2100. 'recordvoice' '0' '-1' '30' filename
  2101. action = rc
  2102. select
  2103.   when action = 0 then nop
  2104.   when action = 1 then nop
  2105.   when action = 2 then nop
  2106.   when action = 3 then nop
  2107.   when action = 4 then signal stdfax
  2108.   when action = 5 then signal stddata
  2109.   when action = 8 then signal stdbusy
  2110.   when action = 10 then nop
  2111.   when action = 12 then signal stdabort
  2112.   when action = 14 then signal stderror
  2113.   when action = 16 then signal stderror
  2114.   otherwise signal arexxerror
  2115. end
  2116.  
  2117. 'flushphonebuffer'
  2118.  
  2119. 'playbeep' '3000' '0' '4'
  2120. action = rc
  2121. select
  2122.   when action = 0 then nop
  2123.   when action = 1 then nop
  2124.   when action = 4 then signal stdfax
  2125.   when action = 5 then signal stddata
  2126.   when action = 8 then signal stdbusy
  2127.   when action = 12 then signal stdabort
  2128.   when action = 14 then signal stderror
  2129.   when action = 16 then signal stderror
  2130.   otherwise signal arexxerror
  2131. end
  2132. signal recordmessagesagain
  2133.  
  2134. recordmessagesdelete:
  2135. address command 'delete >nil: <nil: quiet' filename
  2136. signal recordmessagesagain
  2137.  
  2138.  
  2139. aapresentmenu:
  2140. /* TITLE: avm:source/presentmenu.avmsrc */
  2141. procedure expose pmRetries pmTimesAround
  2142. parse arg filename, valid, retries
  2143. timesaround = retries
  2144. pmTimesAround = timesaround
  2145. pmRetries = retries
  2146.  
  2147. rs.normal = 0
  2148. rs.keydetected = 1
  2149. rs.quietdetected = 2
  2150. rs.silencedetected = 3
  2151. rs.faxdetected = 4
  2152. rs.datadetected = 5
  2153. rs.busydetected = 8
  2154. rs.timedout = 10
  2155. rs.signaldetected = 12
  2156. rs.overflow = 14
  2157. rs.error = 16
  2158. /* CB 0000 */
  2159.  
  2160. aapresentmenuloop:
  2161. 'playvoice' filename
  2162. action = rc
  2163. select
  2164.   when action = 0 then nop
  2165.   when action = 1 then nop
  2166.   when action = 4 then do; return rs.faxdetected; end
  2167.   when action = 5 then do; return rs.datadetected; end
  2168.   when action = 8 then do; return rs.busydetected; end
  2169.   when action = 12 then do; return rs.signaldetected; end
  2170.   when action = 14 then do; return rs.error; end
  2171.   when action = 16 then do; return rs.error; end
  2172.   otherwise signal arexxerror
  2173. end
  2174.  
  2175. 'readnkeys' '1' '5'
  2176. action = rc
  2177. if action = 0 then value = result
  2178. select
  2179.   when action = 0 then signal aapresentmenuvalue
  2180.   when action = 4 then do; return rs.faxdetected; end
  2181.   when action = 5 then do; return rs.datadetected; end
  2182.   when action = 8 then do; return rs.busydetected; end
  2183.   when action = 10 then signal aapresentmenutimeout
  2184.   when action = 12 then do; return rs.signaldetected; end
  2185.   when action = 14 then do; return rs.error; end
  2186.   when action = 16 then do; return rs.error; end
  2187.   otherwise signal arexxerror
  2188. end
  2189. return rs.error
  2190.  
  2191. aapresentmenutimeout:
  2192. 'flushphonebuffer'
  2193.  
  2194. 'playvoice' 'avm:voices/TimedOut'
  2195. action = rc
  2196. select
  2197.   when action = 0 then nop
  2198.   when action = 1 then nop
  2199.   when action = 4 then do; return rs.faxdetected; end
  2200.   when action = 5 then do; return rs.datadetected; end
  2201.   when action = 8 then do; return rs.busydetected; end
  2202.   when action = 12 then do; return rs.signaldetected; end
  2203.   when action = 14 then do; return rs.error; end
  2204.   when action = 16 then do; return rs.error; end
  2205.   otherwise signal arexxerror
  2206. end
  2207.  
  2208. timesaround = timesaround - 1; pmTimesAround = timesaround
  2209. if timesaround <= 0 then return rs.timedout
  2210. signal aapresentmenuloop
  2211.  
  2212. aapresentmenuvalue:
  2213. if pos(value, valid) = 0 then signal aainvalid
  2214. return '=' || value
  2215.  
  2216. aainvalid:
  2217. 'flushphonebuffer'
  2218.  
  2219. 'playvoice' 'avm:voices/BadChoice'
  2220. action = rc
  2221. select
  2222.   when action = 0 then nop
  2223.   when action = 1 then nop
  2224.   when action = 4 then do; return rs.faxdetected; end
  2225.   when action = 5 then do; return rs.datadetected; end
  2226.   when action = 8 then do; return rs.busydetected; end
  2227.   when action = 12 then do; return rs.signaldetected; end
  2228.   when action = 14 then do; return rs.error; end
  2229.   when action = 16 then do; return rs.error; end
  2230.   otherwise signal arexxerror
  2231. end
  2232.  
  2233. timesaround = timesaround - 1; pmTimesAround = timesaround
  2234. if timesaround <= 0 then return rs.timedout
  2235. signal aapresentmenuloop
  2236.  
  2237.  
  2238. aaprocessmailbox:
  2239. /* TITLE: avm:source/processmailbox.avmsrc */
  2240. /* Function which has one argument, the mailbox */
  2241.  
  2242. procedure expose acidname acidnumber mailbox faxscript datascript
  2243. parse arg mailbox .
  2244. call loadMailBox(mailbox)
  2245. calledSysop = 0
  2246. pagedSysop = 0
  2247.  
  2248. if mailbox.autoalertb = 1 & mailbox.autoalertscript ~= '' then
  2249.   address rexx 'alertsysop' mailbox
  2250.  
  2251. 'playvoice' voiceFile(mailbox,'Personal')
  2252. action = rc
  2253. select
  2254.   when action = 0 then nop
  2255.   when action = 1 then signal aakeypressed
  2256.   when action = 4 then signal stdfax
  2257.   when action = 5 then signal stddata
  2258.   when action = 8 then signal stdbusy
  2259.   when action = 12 then signal stdabort
  2260.   when action = 14 then nop
  2261.   when action = 16 then nop
  2262.   otherwise signal arexxerror
  2263. end
  2264.  
  2265. aaAnnounce:
  2266. if mailbox.autoforwardannounce = 1 & mailbox.autoforward ~= '' then call announceForwardNumber
  2267.  
  2268. aanopersonal:
  2269. 'playvoice' 'avm:voices/MailboxGreeting'
  2270. action = rc
  2271. select
  2272.   when action = 0 then nop
  2273.   when action = 1 then signal aakeypressed
  2274.   when action = 4 then signal stdfax
  2275.   when action = 5 then signal stddata
  2276.   when action = 8 then signal stdbusy
  2277.   when action = 12 then signal stdabort
  2278.   when action = 14 then signal stderror
  2279.   when action = 16 then signal stderror
  2280.   otherwise signal arexxerror
  2281. end
  2282.  
  2283. /* Init log file stuff */
  2284.  
  2285. aaskipinstructions:
  2286. handle = makeUniqueFile()
  2287. call initLogEntry()
  2288. call time('r')
  2289.  
  2290. userBeep = getclip('AVMUserBeep')
  2291. if userBeep = 'YES' then do
  2292.  
  2293. 'playvoice' 'avm:voices/UserBeep'
  2294. action = rc
  2295. select
  2296.   when action = 0 then nop
  2297.   when action = 1 then signal aakeypressed
  2298.   when action = 4 then signal stdfax
  2299.   when action = 5 then signal stddata
  2300.   when action = 8 then signal stdbusy
  2301.   when action = 12 then signal stdabort
  2302.   when action = 14 then signal stderror
  2303.   when action = 16 then signal stderror
  2304.   otherwise signal arexxerror
  2305. end
  2306.  
  2307. end; else do
  2308.  
  2309. 'playbeep' '3000' '0' '4'
  2310. action = rc
  2311. select
  2312.   when action = 0 then nop
  2313.   when action = 1 then nop
  2314.   when action = 4 then signal stdfax
  2315.   when action = 5 then signal stddata
  2316.   when action = 8 then signal stdbusy
  2317.   when action = 12 then signal stdabort
  2318.   when action = 14 then signal stderror
  2319.   when action = 16 then signal stderror
  2320.   otherwise signal arexxerror
  2321. end
  2322.  
  2323. end
  2324.  
  2325. 'recordvoice' '0' '-1' '-1' voiceFile(mailbox,handle)
  2326. action = rc
  2327. select
  2328.   when action = 0 then nop
  2329.   when action = 1 then do; call aafixlog; signal aakeypressedafterrecord; end
  2330.   when action = 2 then do; call aafixlog; signal stdabort; end
  2331.   when action = 3 then do; call aafixlog; signal stdabort; end
  2332.   when action = 4 then do; call aafixlog; signal stdfax; end
  2333.   when action = 5 then do; call aafixlog; signal stddata; end
  2334.   when action = 8 then do; call aafixlog; signal stdbusy; end
  2335.   when action = 10 then do; call aafixlog; signal aakeypressedafterrecord; end
  2336.   when action = 12 then do; call aafixlog; signal stdabort; end
  2337.   when action = 14 then do; call aafixlog; signal stderror; end
  2338.   when action = 16 then do; call aafixlog; signal stderror; end
  2339.   otherwise signal arexxerror
  2340. end
  2341.  
  2342. /* Shouldn't get here */
  2343. signal stderror
  2344.  
  2345. aafixlog:
  2346. /* This writes out the log file */
  2347.  
  2348. if mailbox.autoforwardb = 1 & mailbox.autoforwardondemand = "" & calledSysop = 0 then do
  2349.   call aaCallSysop
  2350. end
  2351. if mailbox.autopageb = 1 & mailbox.autopageondemand = "" & pagedSysop = 0 then do
  2352.   call aaPageSysop
  2353. end
  2354.  
  2355. log.filename = handle
  2356. log.length = trunc(time('e'))
  2357. log.type = 'voice'
  2358. call saveLogEntry(mailbox, handle)
  2359. preConv = upper(getclip('AVMPreConvert'))
  2360. if preConv = 'YES' then
  2361.   address command 'run >nil: <nil: avm:adpcm2iff' ,
  2362.   voiceFile(mailbox, handle) voiceFile(mailbox, handle) || 'i' '-nogui'
  2363. return
  2364.  
  2365. aakeypressedafterrecord:
  2366. 'flushphonebuffer'
  2367.  
  2368. processmailboxmenu:
  2369. call aapresentmenu('avm:voices/MailboxCaller', '012345679#*', '3')
  2370. action = result
  2371. select
  2372.   when action = '=0' then signal processmailboxmenu
  2373.   when action = '=1' then signal aaAnnounce
  2374.   when action = '=2' then signal stdfaxinstruct
  2375.   when action = '=3' then do; call aaleavenumber(); end
  2376.   when action = '=4' then do; good = getpassword(mailbox.autoalertondemand); if good then address rexx 'alertsysop' mailbox; end
  2377.   when action = '=5' then signal stddatainstruct
  2378.   when action = '=6' then do; good = getpassword(mailbox.autoforwardondemand); if good & calledSysop = 0 then call aaCallSysop(); end
  2379.   when action = '=7' then do; good = getpassword(mailbox.autopageondemand); if good & pagedSysop = 0 then call aaPageSysop(); end
  2380.   when action = '=8' then nop
  2381.   when action = '=9' then do; call aamaintenancemode(mailbox); end
  2382.   when action = '=#' then do; return; end
  2383.   when action = '=*' then signal answervoiceDone
  2384.   when action = 4 then signal stdfax
  2385.   when action = 5 then signal stddata
  2386.   when action = 8 then signal stdbusy
  2387.   when action = 10 then signal answervoiceDone
  2388.   when action = 12 then signal stdabort
  2389.   when action = 14 then signal stderror
  2390.   when action = 16 then signal stderror
  2391.   otherwise signal arexxerror
  2392. end
  2393. signal processmailboxmenu
  2394.  
  2395. /* Shouldn't get here */
  2396. signal stderror
  2397.  
  2398. aaleavenumber:
  2399. number = getNumber()
  2400.  
  2401. log.returnnumber = number
  2402. call updateLogEntry(mailbox, handle)
  2403. return
  2404.  
  2405. aakeypressed:
  2406. call aapresentmenu('avm:voices/SkipFaxMaintenance', '012359#*', '3')
  2407. action = result
  2408. select
  2409.   when action = '=0' then signal aakeypressed
  2410.   when action = '=1' then signal aaskipinstructions
  2411.   when action = '=2' then signal stdfaxinstruct
  2412.   when action = '=3' then signal aaAnnounce
  2413.   when action = '=4' then nop
  2414.   when action = '=5' then signal stddatainstruct
  2415.   when action = '=6' then nop
  2416.   when action = '=7' then nop
  2417.   when action = '=8' then nop
  2418.   when action = '=9' then do; call aamaintenancemode(mailbox); end
  2419.   when action = '=#' then do; return; end
  2420.   when action = '=*' then signal stdabort
  2421.   when action = 4 then signal stdfax
  2422.   when action = 5 then signal stddata
  2423.   when action = 8 then signal stdbusy
  2424.   when action = 10 then signal answervoiceDone
  2425.   when action = 12 then signal stdabort
  2426.   when action = 14 then signal stderror
  2427.   when action = 16 then signal stderror
  2428.   otherwise signal arexxerror
  2429. end
  2430. return
  2431.  
  2432. /* TITLE: avm:source/maintenancemode.avmsrc */
  2433. aamaintenancemode:
  2434. procedure
  2435. parse arg mailbox .
  2436.  
  2437. call loadMailbox(mailbox)
  2438. good = getPassword(mailbox.password)
  2439. if good = 0 then signal answerVoiceDone
  2440.  
  2441. logsthis = words(showdir(logFile(mailbox, '')))
  2442. logsanonymous = words(showdir(logFile('anonymous', '')))
  2443. if upper(mailbox) = 'ANONYMOUS' then logsanonymous = 0
  2444.  
  2445. if logsthis > 0 then call sayCountEntries(logsthis, 0)
  2446. if logsanonymous > 0 then call sayCountEntries(logsanonymous, 1)
  2447.  
  2448. maintenanceModeAgain:
  2449. call aapresentmenu('avm:voices/maintenancemode', '01234567#*', '3')
  2450. action = result
  2451. select
  2452.   when action = '=0' then signal maintenanceModeAgain
  2453.   when action = '=1' then do; call retrievemessages(mailbox); end
  2454.   when action = '=2' then do; call recordMessage(voiceFile(mailbox, 'Personal')); end
  2455.   when action = '=3' then do; call changeintrooptions(); end
  2456.   when action = '=4' then do; call changepassword(); end
  2457.   when action = '=5' then do; call sendMessageTo('Outgoing', mailbox, '', makeUniqueFile(), 'Voice', voiceFile(mailbox, 'Introduction'), '', ''); end
  2458.   when action = '=6' then do; call changeautooptions(mailbox); end
  2459.   when action = '=7' then do; call aaretrievemessages('Outgoing', 1, mailbox); end
  2460.   when action = '=8' then nop
  2461.   when action = '=9' then nop
  2462.   when action = '=#' then do; return; end
  2463.   when action = '=*' then signal answervoiceDone
  2464.   when action = 4 then signal stdfax
  2465.   when action = 5 then signal stddata
  2466.   when action = 8 then signal stdbusy
  2467.   when action = 10 then signal answerVoiceDone
  2468.   when action = 12 then signal stdabort
  2469.   when action = 14 then signal stderror
  2470.   when action = 16 then signal stderror
  2471.   otherwise signal arexxerror
  2472. end
  2473. signal maintenanceModeAgain
  2474.  
  2475. /* TITLE: avm:source/getpassword.avmsrc */
  2476. /* This is a procedure which accepts 1 argument, a password */
  2477.  
  2478. getpassword:
  2479. procedure
  2480. parse arg password
  2481. count = 3 /* max of 3 times */
  2482. if password = '' then return 1
  2483.  
  2484. getpasswordagain:
  2485. count = count - 1
  2486. if count = 0 then return 0 /* didn't get a good password */
  2487.  
  2488. 'playvoice' 'avm:voices/getpassword'
  2489. action = rc
  2490. select
  2491.   when action = 0 then nop
  2492.   when action = 1 then nop
  2493.   when action = 4 then signal stdfax
  2494.   when action = 5 then signal stddata
  2495.   when action = 8 then signal stdbusy
  2496.   when action = 12 then signal stdabort
  2497.   when action = 14 then signal stderror
  2498.   when action = 16 then signal stderror
  2499.   otherwise signal arexxerror
  2500. end
  2501.  
  2502. 'readkeysuntil' '#' '10' '7'
  2503. action = rc
  2504. if action = 0 then value = result
  2505. select
  2506.   when action = 0 then signal getpasskeydetected
  2507.   when action = 4 then signal stdfax
  2508.   when action = 5 then signal stddata
  2509.   when action = 8 then signal stdbusy
  2510.   when action = 10 then nop
  2511.   when action = 12 then signal stdabort
  2512.   when action = 14 then signal stderror
  2513.   when action = 16 then signal stderror
  2514.   otherwise signal arexxerror
  2515. end
  2516.  
  2517. 'playvoice' 'avm:voices/passwordtimeout'
  2518. action = rc
  2519. select
  2520.   when action = 0 then nop
  2521.   when action = 1 then nop
  2522.   when action = 4 then signal stdfax
  2523.   when action = 5 then signal stddata
  2524.   when action = 8 then signal stdbusy
  2525.   when action = 12 then signal stdabort
  2526.   when action = 14 then signal stderror
  2527.   when action = 16 then signal stderror
  2528.   otherwise signal arexxerror
  2529. end
  2530. signal getpasswordagain
  2531.  
  2532. getpasskeydetected:
  2533. if value = password then return 1
  2534.  
  2535. 'playvoice' 'avm:voices/passwordbad'
  2536. action = rc
  2537. select
  2538.   when action = 0 then nop
  2539.   when action = 1 then nop
  2540.   when action = 4 then signal stdfax
  2541.   when action = 5 then signal stddata
  2542.   when action = 8 then signal stdbusy
  2543.   when action = 12 then signal stdabort
  2544.   when action = 14 then signal stderror
  2545.   when action = 16 then signal stderror
  2546.   otherwise signal arexxerror
  2547. end
  2548. signal getpasswordagain
  2549.  
  2550.  
  2551. retrievemessages:
  2552. procedure
  2553. parse arg mailbox .
  2554. call aaretrievemessages(mailbox, 0, mailbox)
  2555.  
  2556. if upper(mailbox) = 'ANONYMOUS' then return
  2557.  
  2558. 'playvoice' 'avm:voices/retrieveanonymous'
  2559. action = rc
  2560. select
  2561.   when action = 0 then nop
  2562.   when action = 1 then nop
  2563.   when action = 4 then signal stdfax
  2564.   when action = 5 then signal stddata
  2565.   when action = 8 then signal stdbusy
  2566.   when action = 12 then signal stdabort
  2567.   when action = 14 then signal stderror
  2568.   when action = 16 then signal stderror
  2569.   otherwise signal arexxerror
  2570. end
  2571.  
  2572. call aaretrievemessages('Anonymous', 0, mailbox)
  2573.  
  2574. 'playvoice' 'avm:voices/backhome'
  2575. action = rc
  2576. select
  2577.   when action = 0 then nop
  2578.   when action = 1 then nop
  2579.   when action = 4 then signal stdfax
  2580.   when action = 5 then signal stddata
  2581.   when action = 8 then signal stdbusy
  2582.   when action = 12 then signal stdabort
  2583.   when action = 14 then signal stderror
  2584.   when action = 16 then signal stderror
  2585.   otherwise signal arexxerror
  2586. end
  2587. return
  2588.  
  2589. changepassword:
  2590. number = getNumber()
  2591. if number ~= '' then do
  2592.   mailbox.password = number
  2593.   call saveMailbox(mailbox)
  2594. end
  2595. return
  2596.  
  2597. sayCountEntries:
  2598. parse arg count, inAnon
  2599. if count = 1 & inAnon then signal say1Anon
  2600. else if count = 1 & inAnon = 0 then signal say1This
  2601.  
  2602. sayCountMultiple:
  2603. 'playvoice' 'avm:voices/ThereAre'
  2604. action = rc
  2605. select
  2606.   when action = 0 then nop
  2607.   when action = 1 then nop
  2608.   when action = 4 then signal stdfax
  2609.   when action = 5 then signal stddata
  2610.   when action = 8 then signal stdbusy
  2611.   when action = 12 then signal stdabort
  2612.   when action = 14 then signal stderror
  2613.   when action = 16 then signal stderror
  2614.   otherwise signal arexxerror
  2615. end
  2616.  
  2617. call playddnumber(count)
  2618. if inAnon then signal sayCountAnon
  2619. else signal sayCountThis
  2620.  
  2621. sayCountAnon:
  2622. 'playvoice' 'avm:voices/InAnonMailbox'
  2623. action = rc
  2624. select
  2625.   when action = 0 then nop
  2626.   when action = 1 then nop
  2627.   when action = 4 then signal stdfax
  2628.   when action = 5 then signal stddata
  2629.   when action = 8 then signal stdbusy
  2630.   when action = 12 then signal stdabort
  2631.   when action = 14 then signal stderror
  2632.   when action = 16 then signal stderror
  2633.   otherwise signal arexxerror
  2634. end
  2635. return
  2636.  
  2637. sayCountThis:
  2638. 'playvoice' 'avm:voices/InThisMailbox'
  2639. action = rc
  2640. select
  2641.   when action = 0 then nop
  2642.   when action = 1 then nop
  2643.   when action = 4 then signal stdfax
  2644.   when action = 5 then signal stddata
  2645.   when action = 8 then signal stdbusy
  2646.   when action = 12 then signal stdabort
  2647.   when action = 14 then signal stderror
  2648.   when action = 16 then signal stderror
  2649.   otherwise signal arexxerror
  2650. end
  2651. return
  2652.  
  2653. say1Anon:
  2654. 'playvoice' 'avm:voices/OneInAnonMailbox'
  2655. action = rc
  2656. select
  2657.   when action = 0 then nop
  2658.   when action = 1 then nop
  2659.   when action = 4 then signal stdfax
  2660.   when action = 5 then signal stddata
  2661.   when action = 8 then signal stdbusy
  2662.   when action = 12 then signal stdabort
  2663.   when action = 14 then signal stderror
  2664.   when action = 16 then signal stderror
  2665.   otherwise signal arexxerror
  2666. end
  2667. return
  2668.  
  2669. say1This:
  2670. 'playvoice' 'avm:voices/OneInThisMailbox'
  2671. action = rc
  2672. select
  2673.   when action = 0 then nop
  2674.   when action = 1 then nop
  2675.   when action = 4 then signal stdfax
  2676.   when action = 5 then signal stddata
  2677.   when action = 8 then signal stdbusy
  2678.   when action = 12 then signal stdabort
  2679.   when action = 14 then signal stderror
  2680.   when action = 16 then signal stderror
  2681.   otherwise signal arexxerror
  2682. end
  2683. return
  2684.  
  2685. changeintrooptions:
  2686. call aapresentmenu('avm:voices/changeintrooptions', '012345#*', '3')
  2687. action = result
  2688. select
  2689.   when action = '=0' then signal changeintrooptions
  2690.   when action = '=1' then do; call setclip('AVMIntroductionType', 'DAYOFWEEK'); end
  2691.   when action = '=2' then do; call setclip('AVMIntroductionType', 'TIMEOFDAY'); end
  2692.   when action = '=3' then do; call setclip('AVMIntroductionType', 'RANDOM'); end
  2693.   when action = '=4' then do; call changetomanual(); end
  2694.   when action = '=5' then do; call recordintro(); end
  2695.   when action = '=6' then nop
  2696.   when action = '=7' then nop
  2697.   when action = '=8' then nop
  2698.   when action = '=9' then nop
  2699.   when action = '=#' then do; return; end
  2700.   when action = '=*' then signal answervoiceDone
  2701.   when action = 4 then signal stdfax
  2702.   when action = 5 then signal stddata
  2703.   when action = 8 then signal stdbusy
  2704.   when action = 10 then signal answerVoiceDone
  2705.   when action = 12 then signal stdabort
  2706.   when action = 14 then signal stderror
  2707.   when action = 16 then signal stderror
  2708.   otherwise signal arexxerror
  2709. end
  2710. signal changeintrooptions
  2711.  
  2712. changetomanual:
  2713. call aapresentmenu('avm:voices/selectmanualintro', '01234567#*', '3')
  2714. action = result
  2715. select
  2716.   when action = '=0' then signal changetomanual
  2717.   when action = '=1' then do; call setclip('AVMIntroductionType', '1'); end
  2718.   when action = '=2' then do; call setclip('AVMIntroductionType', '2'); end
  2719.   when action = '=3' then do; call setclip('AVMIntroductionType', '3'); end
  2720.   when action = '=4' then do; call setclip('AVMIntroductionType', '4'); end
  2721.   when action = '=5' then do; call setclip('AVMIntroductionType', '5'); end
  2722.   when action = '=6' then do; call setclip('AVMIntroductionType', '6'); end
  2723.   when action = '=7' then do; call setclip('AVMIntroductionType', '7'); end
  2724.   when action = '=8' then nop
  2725.   when action = '=9' then nop
  2726.   when action = '=#' then do; return; end
  2727.   when action = '=*' then signal answervoiceDone
  2728.   when action = 4 then signal stdfax
  2729.   when action = 5 then signal stddata
  2730.   when action = 8 then signal stdbusy
  2731.   when action = 10 then signal answerVoiceDone
  2732.   when action = 12 then signal stdabort
  2733.   when action = 14 then signal stderror
  2734.   when action = 16 then signal stderror
  2735.   otherwise signal arexxerror
  2736. end
  2737. signal changetomanual
  2738.  
  2739. recordintro:
  2740. call aapresentmenu('avm:voices/recordintro', '01234567#*', '3')
  2741. action = result
  2742. select
  2743.   when action = '=0' then signal recordintro
  2744.   when action = '=1' then do; call recordmessage('avm:voices/intro1'); end
  2745.   when action = '=2' then do; call recordmessage('avm:voices/intro2'); end
  2746.   when action = '=3' then do; call recordmessage('avm:voices/intro3'); end
  2747.   when action = '=4' then do; call recordmessage('avm:voices/intro4'); end
  2748.   when action = '=5' then do; call recordmessage('avm:voices/intro5'); end
  2749.   when action = '=6' then do; call recordmessage('avm:voices/intro6'); end
  2750.   when action = '=7' then do; call recordmessage('avm:voices/intro7'); end
  2751.   when action = '=8' then nop
  2752.   when action = '=9' then nop
  2753.   when action = '=#' then do; return; end
  2754.   when action = '=*' then signal answervoiceDone
  2755.   when action = 4 then signal stdfax
  2756.   when action = 5 then signal stddata
  2757.   when action = 8 then signal stdbusy
  2758.   when action = 10 then signal answerVoiceDone
  2759.   when action = 12 then signal stdabort
  2760.   when action = 14 then signal stderror
  2761.   when action = 16 then signal stderror
  2762.   otherwise signal arexxerror
  2763. end
  2764. signal recordintro
  2765.  
  2766. changeautooptions:
  2767. procedure
  2768. parse arg mailbox .
  2769. call loadMailbox(mailbox)
  2770.  
  2771. changeautomenu:
  2772. call aapresentmenu('avm:voices/ChangeAutoOptions', '0123#*', '3')
  2773. action = result
  2774. select
  2775.   when action = '=0' then signal changeautomenu
  2776.   when action = '=1' then do; call editautooptions('AUTOFORWARDB', 'AUTOFORWARDONDEMAND', 'AUTOFORWARD', 'AUTOFORWARDANNOUNCE'); end
  2777.   when action = '=2' then do; call editautooptions('AUTOFAXFORWARDB', '', 'AUTOFAXFORWARD', ''); end
  2778.   when action = '=3' then do; call editautooptions('AUTOPAGEB', 'AUTOPAGEONDEMAND', 'AUTOPAGE', ''); end
  2779.   when action = '=4' then nop
  2780.   when action = '=5' then nop
  2781.   when action = '=6' then nop
  2782.   when action = '=7' then nop
  2783.   when action = '=8' then nop
  2784.   when action = '=9' then nop
  2785.   when action = '=#' then do; return; end
  2786.   when action = '=*' then signal answerVoiceDone
  2787.   when action = 4 then signal stdfax
  2788.   when action = 5 then signal stddata
  2789.   when action = 8 then signal stdbusy
  2790.   when action = 10 then signal answerVoiceDone
  2791.   when action = 12 then signal stdabort
  2792.   when action = 14 then signal stderror
  2793.   when action = 16 then signal stderror
  2794.   otherwise signal arexxerror
  2795. end
  2796. signal changeautomenu
  2797.  
  2798. editautooptions:
  2799. procedure expose mailbox. mailbox
  2800. parse arg isOn, onDemand, telNumber, announce
  2801. call showAutoOptions
  2802.  
  2803. editautomenu:
  2804. call aapresentmenu('avm:voices/AutoOptions', '01234567#*', '3')
  2805. action = result
  2806. select
  2807.   when action = '=0' then signal editautomenu
  2808.   when action = '=1' then do; mailbox.isOn = 1; call saveMailbox(mailbox); end
  2809.   when action = '=2' then do; mailbox.isOn = 0; call saveMailbox(mailbox); end
  2810.   when action = '=3' then do; mailbox.telNumber = getNumber(); call saveMailbox(mailbox); end
  2811.   when action = '=4' then do; if onDemand ~= '' then do; mailbox.onDemand = getNumber(); call saveMailbox(mailbox); end; end
  2812.   when action = '=5' then do; if announce ~= '' then do; mailbox.announce = 1; call saveMailbox(mailbox); end; end
  2813.   when action = '=6' then do; if announce ~= '' then do; mailbox.announce = 0; call saveMailbox(mailbox); end; end
  2814.   when action = '=7' then do; call showAutoOptions(); end
  2815.   when action = '=8' then nop
  2816.   when action = '=9' then nop
  2817.   when action = '=#' then do; return; end
  2818.   when action = '=*' then signal answerVoiceDone
  2819.   when action = 4 then signal stdfax
  2820.   when action = 5 then signal stddata
  2821.   when action = 8 then signal stdbusy
  2822.   when action = 10 then signal answerVoiceDone
  2823.   when action = 12 then signal stdabort
  2824.   when action = 14 then signal stderror
  2825.   when action = 16 then signal stderror
  2826.   otherwise signal arexxerror
  2827. end
  2828. signal editautomenu
  2829.  
  2830. showautooptions:
  2831. if mailbox.isOn = 1 then call autoIsOn(); else call autoIsOff()
  2832. if onDemand ~= '' then call autoOnDemand(mailbox.onDemand)
  2833. call autoTelNumber(mailbox.telNumber)
  2834. if announce ~= '' then
  2835.   if mailbox.announce = 1 then call announceIsOn(); else call announceIsOff()
  2836. return
  2837.  
  2838. autoIsOn:
  2839. 'playvoice' 'avm:voices/AutoIsOn'
  2840. action = rc
  2841. select
  2842.   when action = 0 then nop
  2843.   when action = 1 then nop
  2844.   when action = 4 then signal stdfax
  2845.   when action = 5 then signal stddata
  2846.   when action = 8 then signal stdbusy
  2847.   when action = 12 then signal stdabort
  2848.   when action = 14 then signal stderror
  2849.   when action = 16 then signal stderror
  2850.   otherwise signal arexxerror
  2851. end
  2852.  
  2853. 'flushphonebuffer'
  2854. return
  2855.  
  2856. autoIsOff:
  2857. 'playvoice' 'avm:voices/autoIsOff'
  2858. action = rc
  2859. select
  2860.   when action = 0 then nop
  2861.   when action = 1 then nop
  2862.   when action = 4 then signal stdfax
  2863.   when action = 5 then signal stddata
  2864.   when action = 8 then signal stdbusy
  2865.   when action = 12 then signal stdabort
  2866.   when action = 14 then signal stderror
  2867.   when action = 16 then signal stderror
  2868.   otherwise signal arexxerror
  2869. end
  2870.  
  2871. 'flushphonebuffer'
  2872. return
  2873.  
  2874. announceIsOn:
  2875. 'playvoice' 'avm:voices/AnnounceIsOn'
  2876. action = rc
  2877. select
  2878.   when action = 0 then nop
  2879.   when action = 1 then nop
  2880.   when action = 4 then signal stdfax
  2881.   when action = 5 then signal stddata
  2882.   when action = 8 then signal stdbusy
  2883.   when action = 12 then signal stdabort
  2884.   when action = 14 then signal stderror
  2885.   when action = 16 then signal stderror
  2886.   otherwise signal arexxerror
  2887. end
  2888.  
  2889. 'flushphonebuffer'
  2890. return
  2891.  
  2892. announceIsOff:
  2893. 'playvoice' 'avm:voices/AnnounceIsOff'
  2894. action = rc
  2895. select
  2896.   when action = 0 then nop
  2897.   when action = 1 then nop
  2898.   when action = 4 then signal stdfax
  2899.   when action = 5 then signal stddata
  2900.   when action = 8 then signal stdbusy
  2901.   when action = 12 then signal stdabort
  2902.   when action = 14 then signal stderror
  2903.   when action = 16 then signal stderror
  2904.   otherwise signal arexxerror
  2905. end
  2906.  
  2907. 'flushphonebuffer'
  2908. return
  2909.  
  2910. autoOnDemand:
  2911. procedure
  2912. parse arg number
  2913.  
  2914. 'playvoice' 'avm:voices/AutoOnDemand'
  2915. action = rc
  2916. select
  2917.   when action = 0 then nop
  2918.   when action = 1 then nop
  2919.   when action = 4 then signal stdfax
  2920.   when action = 5 then signal stddata
  2921.   when action = 8 then signal stdbusy
  2922.   when action = 12 then signal stdabort
  2923.   when action = 14 then signal stderror
  2924.   when action = 16 then signal stderror
  2925.   otherwise signal arexxerror
  2926. end
  2927.  
  2928. call playNumber(number)
  2929.  
  2930. 'flushphonebuffer'
  2931. return
  2932.  
  2933. autoTelNumber:
  2934. procedure
  2935. parse arg number
  2936.  
  2937. 'playvoice' 'avm:voices/AutoTelNumber'
  2938. action = rc
  2939. select
  2940.   when action = 0 then nop
  2941.   when action = 1 then nop
  2942.   when action = 4 then signal stdfax
  2943.   when action = 5 then signal stddata
  2944.   when action = 8 then signal stdbusy
  2945.   when action = 12 then signal stdabort
  2946.   when action = 14 then signal stderror
  2947.   when action = 16 then signal stderror
  2948.   otherwise signal arexxerror
  2949. end
  2950.  
  2951. call playNumber(number)
  2952.  
  2953. 'flushphonebuffer'
  2954. return
  2955.  
  2956. /* TITLE: avm:source/retrievemessages.avmsrc */
  2957. aaretrievemessages:
  2958. procedure
  2959. parse arg mailbox, isOutgoing, whichMailbox
  2960.  
  2961. logs = showdir(logFile(mailbox, ''))
  2962. numlogs = words(logs)
  2963. currentlog = 1
  2964.  
  2965. retrievemessagesnext:
  2966. if currentlog > numlogs then signal retrievemessagesdone
  2967. currentHandle = word(logs, currentLog)
  2968. call loadLogEntry(mailbox, currentHandle)
  2969. if (isOutgoing & ( log.returnRetry = '' | log.returnRetry = 0 | (upper(log.origMailbox) ~= upper(whichMailbox) & upper(log.origMailbox) ~= 'ANONYMOUS'))) then do
  2970.   currentLog = currentLog + 1
  2971.   signal retrieveMessagesNext
  2972. end
  2973.  
  2974. retrievemessagesagain:
  2975. logtype = upper(log.type)
  2976. if logtype = 'FAX' then signal isfax
  2977. else if logtype = 'VOICE' then signal isvoice
  2978. else signal isunknown
  2979.  
  2980. isfax:
  2981. 'playvoice' 'avm:voices/FaxMessage'
  2982. action = rc
  2983. select
  2984.   when action = 0 then nop
  2985.   when action = 1 then nop
  2986.   when action = 4 then signal stdfax
  2987.   when action = 5 then signal stddata
  2988.   when action = 8 then signal stdbusy
  2989.   when action = 12 then signal stdabort
  2990.   when action = 14 then signal stderror
  2991.   when action = 16 then signal stderror
  2992.   otherwise signal arexxerror
  2993. end
  2994. signal aftertype
  2995.  
  2996. isvoice:
  2997. 'playbeep' '3000' '0' '4'
  2998. action = rc
  2999. select
  3000.   when action = 0 then nop
  3001.   when action = 1 then nop
  3002.   when action = 4 then nop
  3003.   when action = 5 then nop
  3004.   when action = 8 then nop
  3005.   when action = 12 then signal stdabort
  3006.   when action = 14 then signal stderror
  3007.   when action = 16 then signal stderror
  3008.   otherwise signal arexxerror
  3009. end
  3010.  
  3011. 'playvoice' voiceFile(mailbox, log.filename)
  3012. action = rc
  3013. select
  3014.   when action = 0 then nop
  3015.   when action = 1 then nop
  3016.   when action = 4 then nop
  3017.   when action = 5 then nop
  3018.   when action = 8 then nop
  3019.   when action = 12 then signal stdabort
  3020.   when action = 14 then nop
  3021.   when action = 16 then nop
  3022.   otherwise signal arexxerror
  3023. end
  3024.  
  3025. 'flushphonebuffer'
  3026.  
  3027. 'playbeep' '3000' '0' '4'
  3028. action = rc
  3029. select
  3030.   when action = 0 then nop
  3031.   when action = 1 then nop
  3032.   when action = 4 then nop
  3033.   when action = 5 then nop
  3034.   when action = 8 then nop
  3035.   when action = 12 then signal stdabort
  3036.   when action = 14 then signal stderror
  3037.   when action = 16 then signal stderror
  3038.   otherwise signal arexxerror
  3039. end
  3040. signal aftertype
  3041.  
  3042. isunknown:
  3043. 'playvoice' 'avm:voices/UnknownMessage'
  3044. action = rc
  3045. select
  3046.   when action = 0 then nop
  3047.   when action = 1 then nop
  3048.   when action = 4 then signal stdfax
  3049.   when action = 5 then signal stddata
  3050.   when action = 8 then signal stdbusy
  3051.   when action = 12 then signal stdabort
  3052.   when action = 14 then signal stderror
  3053.   when action = 16 then signal stderror
  3054.   otherwise signal arexxerror
  3055. end
  3056. signal aftertype
  3057.  
  3058. aftertype:
  3059. call aapresentmenu('avm:voices/RetrieveMessages', '012345678#*', '3')
  3060. action = result
  3061. select
  3062.   when action = '=0' then signal aftertype
  3063.   when action = '=1' then signal retrievemessagesagain
  3064.   when action = '=2' then do; call playtimedate(); end
  3065.   when action = '=3' then do; call playtelcidnumber(); end
  3066.   when action = '=4' then signal processNextMessage
  3067.   when action = '=5' then do; address rexx 'delete' mailbox currentHandle; signal processNextMessage; end
  3068.   when action = '=6' then do; if isOutgoing = 0 then address rexx 'archive' mailbox currentHandle; else address rexx 'archiveoutgoing' mailbox currentHandle; signal processNextMessage; end
  3069.   when action = '=7' then do; call forwardmessage(mailbox, currentHandle); end
  3070.   when action = '=8' then do; call replymessage(mailbox, currentHandle); end
  3071.   when action = '=9' then nop
  3072.   when action = '=#' then do; return; end
  3073.   when action = '=*' then signal answervoiceDone
  3074.   when action = 4 then signal stdfax
  3075.   when action = 5 then signal stddata
  3076.   when action = 8 then signal stdbusy
  3077.   when action = 10 then signal answerVoiceDone
  3078.   when action = 12 then signal stdabort
  3079.   when action = 14 then signal stderror
  3080.   when action = 16 then signal stderror
  3081.   otherwise signal arexxerror
  3082. end
  3083. signal aftertype
  3084.  
  3085. processNextMessage:
  3086. currentLog = currentLog + 1
  3087. signal retrievemessagesnext
  3088.  
  3089. playtimedate:
  3090. actualTime = convertToTime(log.time)
  3091. actualDate = convertToDate(log.time)
  3092. call playTime(actualTime)
  3093. actualDate = date('s', actualDate) /* convert to sorted */
  3094. call playDate(actualDate)
  3095.  
  3096. 'flushphonebuffer'
  3097.  
  3098. return
  3099.  
  3100. playtelcidnumber:
  3101. 'playvoice' 'avm:voices/cidnumber'
  3102. action = rc
  3103. select
  3104.   when action = 0 then nop
  3105.   when action = 1 then nop
  3106.   when action = 4 then signal stdfax
  3107.   when action = 5 then signal stddata
  3108.   when action = 8 then signal stdbusy
  3109.   when action = 12 then signal stdabort
  3110.   when action = 14 then signal stderror
  3111.   when action = 16 then signal stderror
  3112.   otherwise signal arexxerror
  3113. end
  3114.  
  3115. if symbol('log.cidnumber') = 'VAR' then
  3116.   call playNumber(log.cidnumber)
  3117.  
  3118. 'flushphonebuffer'
  3119.  
  3120. 'playvoice' 'avm:voices/returnnumber'
  3121. action = rc
  3122. select
  3123.   when action = 0 then nop
  3124.   when action = 1 then nop
  3125.   when action = 4 then signal stdfax
  3126.   when action = 5 then signal stddata
  3127.   when action = 8 then signal stdbusy
  3128.   when action = 12 then signal stdabort
  3129.   when action = 14 then signal stderror
  3130.   when action = 16 then signal stderror
  3131.   otherwise signal arexxerror
  3132. end
  3133.  
  3134. if symbol('log.returnnumber') = 'VAR' then
  3135.   call playNumber(log.returnnumber)
  3136.  
  3137. 'flushphonebuffer'
  3138. return
  3139.  
  3140. retrievemessagesdone:
  3141. 'playvoice' 'avm:voices/NoMoreMessages'
  3142. action = rc
  3143. select
  3144.   when action = 0 then nop
  3145.   when action = 1 then nop
  3146.   when action = 4 then signal stdfax
  3147.   when action = 5 then signal stddata
  3148.   when action = 8 then signal stdbusy
  3149.   when action = 12 then signal stdabort
  3150.   when action = 14 then signal stderror
  3151.   when action = 16 then signal stderror
  3152.   otherwise signal arexxerror
  3153. end
  3154. return
  3155.  
  3156. replyMessage:
  3157. procedure
  3158. parse arg mailbox, magicCookie
  3159. call loadLogEntry(mailbox, magicCookie)
  3160. number = log.returnNumber
  3161. if number = '' then number = log.cidNumber
  3162. handle = makeUniqueFile()
  3163. sent = sendMessageTo('Outgoing', mailbox, number, handle, 'Voice', voiceFile(mailbox, 'Introduction'), log.cidNumber, log.cidName)
  3164.  
  3165. return
  3166.  
  3167. forwardMessage:
  3168. procedure
  3169. parse arg mailbox, magicCookie
  3170. call loadLogEntry(mailbox, magicCookie)
  3171.  
  3172. if verify(log.fileName, '/:', 'M') = 0 then
  3173.   address command 'copy >nil: <nil:' voiceFile(mailbox, log.fileName) || '#?' voiceFile('Outgoing', '')
  3174. sent = sendMessageTo('Outgoing', mailbox, '', log.fileName, log.type, voiceFile(mailbox, 'Introduction'), log.cidName, log.cidNumber)
  3175. return
  3176.  
  3177. /* TITLE: avm:source/sendmessageto.avmsrc */
  3178. sendMessageTo:
  3179. procedure
  3180. parse arg mailbox, originMailbox, number, actualFilename, fileType, introFileName, acidName, acidNumber
  3181. handle = makeUniqueFile()
  3182. call initLogEntry()
  3183. log.returnNumber = number
  3184. log.filename = actualFilename
  3185. log.type = fileType; log.returnSendFunc = 'DefaultSender'
  3186. log.returnRetry = 3; log.returnInterval = 5
  3187. log.origMailbox = originMailbox
  3188. log.altFileName = introFileName; log.cidName = acidName; log.cidNumber = acidNumber
  3189.  
  3190. if upper(log.type) = 'VOICE' & ~exists(voiceFile(mailbox, log.fileName)) then call smNeedToRecordOut
  3191. if ~exists(voiceFile(mailbox, log.altFileName)) then call smNeedToRecordIntro
  3192. if log.returnNumber = '' then do; call smNeedToEnterTel(); signal sendMessageToMenu; end
  3193.  
  3194. 'playvoice' 'avm:voices/numberToSendTo'
  3195. action = rc
  3196. select
  3197.   when action = 0 then nop
  3198.   when action = 1 then nop
  3199.   when action = 4 then do; call cleanSendMessageTo(); signal stdfax; end
  3200.   when action = 5 then do; call cleanSendMessageTo(); signal stddata; end
  3201.   when action = 8 then do; call cleanSendMessageTo(); signal stdbusy; end
  3202.   when action = 12 then do; call cleanSendMessageTo(); signal stdabort; end
  3203.   when action = 14 then do; call cleanSendMessageTo(); signal stderror; end
  3204.   when action = 16 then do; call cleanSendMessageTo(); signal stderror; end
  3205.   otherwise signal arexxerror
  3206. end
  3207.  
  3208. call playNumber(log.returnNumber)
  3209.  
  3210. 'flushphonebuffer'
  3211.  
  3212. sendMessageToMenu:
  3213. call aapresentmenu('avm:voices/editSendMessage', '01234#*', '3')
  3214. action = result
  3215. select
  3216.   when action = '=0' then signal sendMessageToMenu
  3217.   when action = '=1' then do; call playNumber(log.returnNumber); log.returnNumber = getNumber(); signal sendMessageToMenu; end
  3218.   when action = '=2' then do; if upper(log.type) = 'VOICE' then call recordMessage(voiceFile(mailbox, log.filename)); signal sendMessageToMenu; end
  3219.   when action = '=3' then do; call editIntro(); signal sendMessageToMenu; end
  3220.   when action = '=4' then do; if smCanSend() then do; call saveLogEntry(mailbox, handle); return 1; end; else signal sendMessageToMenu; end
  3221.   when action = '=5' then nop
  3222.   when action = '=6' then nop
  3223.   when action = '=7' then nop
  3224.   when action = '=8' then nop
  3225.   when action = '=9' then nop
  3226.   when action = '=#' then do; call cleanSendMessageTo(); return 0; end
  3227.   when action = '=*' then do; call cleanSendMessageTo(); signal answerVoiceDone; end
  3228.   when action = 4 then do; call cleanSendMessageTo(); signal stdfax; end
  3229.   when action = 5 then do; call cleanSendMessageTo(); signal stddata; end
  3230.   when action = 8 then do; call cleanSendMessageTo(); signal stdbusy; end
  3231.   when action = 10 then do; call cleanSendMessageTo(); signal answerVoiceDone; end
  3232.   when action = 12 then do; call cleanSendMessageTo(); signal stdabort; end
  3233.   when action = 14 then do; call cleanSendMessageTo(); signal stderror; end
  3234.   when action = 16 then do; call cleanSendMessageTo(); signal stderror; end
  3235.   otherwise signal arexxerror
  3236. end
  3237. call cleanSendMessageTo(); return 0
  3238.  
  3239. cleanSendMessageTo:
  3240. if verify(log.fileName, '/:', 'M') = 0 then
  3241.   address command 'delete >nil: <nil: quiet' voiceFile('Outgoing', log.fileName) || '#?'
  3242. if verify(log.altFileName, '/:', 'M') = 0 then
  3243.   address command 'delete >nil: <nil: quiet' voiceFile('Outgoing', log.altFileName) || '#?'
  3244. return
  3245.  
  3246. smNeedToRecordOut:
  3247. 'playvoice' 'avm:voices/NeedToRecordOutgoing'
  3248. action = rc
  3249. select
  3250.   when action = 0 then nop
  3251.   when action = 1 then nop
  3252.   when action = 4 then do; call cleanSendMessageTo(); signal stdfax; end
  3253.   when action = 5 then do; call cleanSendMessageTo(); signal stddata; end
  3254.   when action = 8 then do; call cleanSendMessageTo(); signal stdbusy; end
  3255.   when action = 12 then do; call cleanSendMessageTo(); signal stdabort; end
  3256.   when action = 14 then do; call cleanSendMessageTo(); signal stderror; end
  3257.   when action = 16 then do; call cleanSendMessageTo(); signal stderror; end
  3258.   otherwise signal arexxerror
  3259. end
  3260.  
  3261. 'flushphonebuffer'
  3262. return
  3263.  
  3264. smNeedToRecordIntro:
  3265. 'playvoice' 'avm:voices/NeedToRecordIntro'
  3266. action = rc
  3267. select
  3268.   when action = 0 then nop
  3269.   when action = 1 then nop
  3270.   when action = 4 then do; call cleanSendMessageTo(); signal stdfax; end
  3271.   when action = 5 then do; call cleanSendMessageTo(); signal stddata; end
  3272.   when action = 8 then do; call cleanSendMessageTo(); signal stdbusy; end
  3273.   when action = 12 then do; call cleanSendMessageTo(); signal stdabort; end
  3274.   when action = 14 then do; call cleanSendMessageTo(); signal stderror; end
  3275.   when action = 16 then do; call cleanSendMessageTo(); signal stderror; end
  3276.   otherwise signal arexxerror
  3277. end
  3278.  
  3279. 'flushphonebuffer'
  3280. return
  3281.  
  3282. smNeedToEnterTel:
  3283. 'playvoice' 'avm:voices/NeedToEnterTel'
  3284. action = rc
  3285. select
  3286.   when action = 0 then nop
  3287.   when action = 1 then nop
  3288.   when action = 4 then do; call cleanSendMessageTo(); signal stdfax; end
  3289.   when action = 5 then do; call cleanSendMessageTo(); signal stddata; end
  3290.   when action = 8 then do; call cleanSendMessageTo(); signal stdbusy; end
  3291.   when action = 12 then do; call cleanSendMessageTo(); signal stdabort; end
  3292.   when action = 14 then do; call cleanSendMessageTo(); signal stderror; end
  3293.   when action = 16 then do; call cleanSendMessageTo(); signal stderror; end
  3294.   otherwise signal arexxerror
  3295. end
  3296.  
  3297. 'flushphonebuffer'
  3298. return
  3299.  
  3300. editIntro:
  3301. call aapresentmenu('avm:voices/EditIntro', '0123#*', '3')
  3302. action = result
  3303. select
  3304.   when action = '=0' then signal editIntro
  3305.   when action = '=1' then do; log.altFileName = voiceFile(log.origMailbox, 'Introduction'); end
  3306.   when action = '=2' then do; log.altFileName = makeUniqueFile(); end
  3307.   when action = '=3' then do; call recordMessage(voiceFile(mailbox, log.altFileName)); end
  3308.   when action = '=4' then nop
  3309.   when action = '=5' then nop
  3310.   when action = '=6' then nop
  3311.   when action = '=7' then nop
  3312.   when action = '=8' then nop
  3313.   when action = '=9' then nop
  3314.   when action = '=#' then do; return; end
  3315.   when action = '=*' then do; call cleanSendMessageTo(); signal answerVoiceDone; end
  3316.   when action = 4 then do; call cleanSendMessageTo(); signal stdfax; end
  3317.   when action = 5 then do; call cleanSendMessageTo(); signal stddata; end
  3318.   when action = 8 then do; call cleanSendMessageTo(); signal stdbusy; end
  3319.   when action = 10 then do; call cleanSendMessageTo(); signal answerVoiceDone; end
  3320.   when action = 12 then do; call cleanSendMessageTo(); signal stdabort; end
  3321.   when action = 14 then do; call cleanSendMessageTo(); signal stderror; end
  3322.   when action = 16 then do; call cleanSendMessageTo(); signal stderror; end
  3323.   otherwise signal arexxerror
  3324. end
  3325. signal editIntro
  3326.  
  3327. smCanSend:
  3328. if log.returnNumber = '' then do; call smNeedToEnterTel(); return 0; end
  3329. if upper(log.type) = 'VOICE' & ~exists(voiceFile(mailbox, log.fileName)) then do; call smNeedToRecordOut(); return 0; end
  3330. return 1
  3331.  
  3332.  
  3333.  
  3334. return
  3335.  
  3336. aaCallSysop:
  3337. procedure expose mailbox. mailbox calledSysop
  3338. if mailbox.autoforwardscript ~= "" & mailbox.autoforward ~= "" then do
  3339.      calledSysop = 1
  3340.      handle = makeUniqueFile()
  3341.      call initLogEntry(); log.origmailbox = mailbox
  3342.      log.filename = 'avm:voices/autoforward'; log.type = 'voice'
  3343.      log.returnsendfunc = mailbox.autoforwardscript; log.returninterval = 5
  3344.      log.returnretry = 3; log.returnnumber = mailbox.autoforward; log.altFileName = voiceFile(mailbox, 'Introduction')
  3345.      call saveLogEntry('Outgoing', handle)
  3346.  
  3347. 'playvoice' 'avm:voices/BeingForwarded'
  3348. action = rc
  3349. select
  3350.   when action = 0 then nop
  3351.   when action = 1 then nop
  3352.   when action = 4 then signal stdfax
  3353.   when action = 5 then signal stddata
  3354.   when action = 8 then signal stdbusy
  3355.   when action = 12 then signal stdabort
  3356.   when action = 14 then signal stderror
  3357.   when action = 16 then signal stderror
  3358.   otherwise signal arexxerror
  3359. end
  3360.  
  3361.     call playNumber(mailbox.autoforward)
  3362.  
  3363. 'flushphonebuffer'
  3364.  
  3365. end
  3366. return
  3367.  
  3368. announceForwardNumber:
  3369. 'playvoice' 'avm:voices/AnnounceForward'
  3370. action = rc
  3371. select
  3372.   when action = 0 then nop
  3373.   when action = 1 then nop
  3374.   when action = 4 then signal stdfax
  3375.   when action = 5 then signal stddata
  3376.   when action = 8 then signal stdbusy
  3377.   when action = 12 then signal stdabort
  3378.   when action = 14 then signal stderror
  3379.   when action = 16 then signal stderror
  3380.   otherwise signal arexxerror
  3381. end
  3382.  
  3383. call playNumber(mailbox.autoforward)
  3384.  
  3385. 'playvoice' 'avm:voices/AnnounceAgain'
  3386. action = rc
  3387. select
  3388.   when action = 0 then nop
  3389.   when action = 1 then nop
  3390.   when action = 4 then signal stdfax
  3391.   when action = 5 then signal stddata
  3392.   when action = 8 then signal stdbusy
  3393.   when action = 12 then signal stdabort
  3394.   when action = 14 then signal stderror
  3395.   when action = 16 then signal stderror
  3396.   otherwise signal arexxerror
  3397. end
  3398. return
  3399.  
  3400. aaPageSysop:
  3401. procedure expose mailbox. mailbox pagedSysop
  3402. if mailbox.autopagescript ~= "" & mailbox.autopage ~= "" then do
  3403.      pagedSysop = 1
  3404.      handle = makeUniqueFile()
  3405.      call initLogEntry(); log.origmailbox = mailbox
  3406.      log.filename = 'avm:voices/autoforward'; log.type = 'voice'
  3407.      log.returnsendfunc = mailbox.autopagescript; log.returninterval = 5
  3408.      log.returnretry = 3; log.returnnumber = mailbox.autopage; log.altFileName = voiceFile(mailbox, 'Introduction')
  3409.      call saveLogEntry('Outgoing', handle)
  3410. end
  3411. return
  3412.  
  3413.  
  3414. stdabort:
  3415. exit
  3416.  
  3417. stdbusy:
  3418. exit
  3419.  
  3420. stderror:
  3421. exit
  3422.  
  3423. stdtimedout:
  3424. exit
  3425.  
  3426. stdfaxinstruct:
  3427. 'playvoice' 'avm:voices/FaxStarting'
  3428. action = rc
  3429. select
  3430.   when action = 0 then nop
  3431.   when action = 1 then do; call checkifabort; end
  3432.   when action = 4 then nop
  3433.   when action = 5 then nop
  3434.   when action = 8 then signal stdbusy
  3435.   when action = 12 then signal stdabort
  3436.   when action = 14 then nop
  3437.   when action = 16 then nop
  3438.   otherwise signal arexxerror
  3439. end
  3440.  
  3441. stdfax:
  3442. faxscript = getclip(address() || 'FAXSCRIPT')
  3443. if faxscript = '' then faxscript = 'handlefax'
  3444. if symbol('mailbox') = 'VAR' then address rexx faxscript address() mailbox
  3445. else address rexx faxscript address() 'anonymous'
  3446. exit
  3447.  
  3448. stddatainstruct:
  3449. 'playvoice' 'avm:voices/DataStarting'
  3450. action = rc
  3451. select
  3452.   when action = 0 then nop
  3453.   when action = 1 then do; call checkifabort; end
  3454.   when action = 4 then nop
  3455.   when action = 5 then nop
  3456.   when action = 8 then signal stdbusy
  3457.   when action = 12 then signal stdabort
  3458.   when action = 14 then nop
  3459.   when action = 16 then nop
  3460.   otherwise signal arexxerror
  3461. end
  3462.  
  3463. stddata:
  3464. datascript = getclip(address() || 'DATASCRIPT')
  3465. if datascript = '' then datascript = 'handledata'
  3466. if symbol('mailbox') = 'VAR' then address rexx datascript address() mailbox
  3467. else address rexx datascript address()
  3468. exit
  3469.  
  3470. checkifabort:
  3471. 'readnkeys' '1' '3'
  3472. action = rc
  3473. if action = 0 then value = result
  3474. select
  3475.   when action = 0 then do; if value = '*' then signal stdabort; end
  3476.   when action = 4 then nop
  3477.   when action = 5 then nop
  3478.   when action = 8 then signal stdbusy
  3479.   when action = 10 then nop
  3480.   when action = 12 then signal stdabort
  3481.   when action = 14 then signal stderror
  3482.   when action = 16 then signal stderror
  3483.   otherwise signal arexxerror
  3484. end
  3485. return
  3486.  
  3487.  
  3488.